您的位置:首页 > 编程语言 > ASP

Controllers in ASP.NET MVC 3.0

2011-01-31 22:40 459 查看




本部分包含如下几个内容:





1.Introduction

在ASP.NET MVC 3.0中Controller部分新增的功能主要是ActionFilter和ActionResult,个人觉得没有太大的改动。而且相比其它几部分Controller部分的修改不是ASP.NET MVC 3.0的亮点。

2.Global Action Filters

在之前的版本中就有Action Filter的概念。而且默认的它自带了如下几个Action Filter。



这些属性可以添加到某个Action上或者是整个Controller上:





为什么要在ASP.NET MVC 3.0中增加Global Action Filter呢?

有时候,我们在某个Action运行前或者是Action运行后加上某个动作,比如在登录认证完成后,我们需要记录下这个人的这一次登录时间,所以ASP.NET MVC团队在MVC 2中添加了Action Filter功能。

Action filters are custom attributes that provide a declarative means to add pre-action and post-action behavior to specific controller action methods.

但是很多时候,你可能需要在所有的Action执行前都运行某段代码,所以MVC 3提供了一个新的功能,能够让你把Global filter添加到GlobalFilters这个集合中。

来个例子:

我们定义一个CustomActionFilter继承了ActionFilterAttribute类。





自定义的Action Filter可以override四个方法,Action执行时,Action执行后,Result返回时,Result返回后。



因为在ASP.NET MVC 3.0中有Global Filter的加入,所以我们现在可以在Global.asax中注册这个Filter。





上面的Action Filter我们未在任何一个Action前面添加属性,运行下看看:





我们的HomeControllerhome的action运行时,执行了我们定义的Custom Action。

3.Caching Child Actions

ASP.NET MVC 3.0中我们可以在子动作(Child Action)中使用OutputCache属性了。

首先我们来定义一个ChildAction:





对应的添加一个View叫CurrentTime”





因为model是Dynamic类型的,所以我们只需要使用@model DateTime来定义mode。

下面应该是把这个Partical view添加到Index的view中:





运行后:





下面是使用Child Cache属性,我们看看是否两个输出时间相同:





运行结果:





4.The ViewBag





在前面文章中已经介绍过这个了。

5.New Action Results

在ASP.NET MVC 3.0中有新的Action Result:

a. HttpNotFoundResult

b. HttpRedirectResult

c. HttpStatusCodeResult

6.Request Validation

a.使用ValidateInput属性来设置是否当前的Model需要验证:





给model加上这个属性,当你Post数据时,MVC框架就不再自动去验证当前的输入是否合法。

你会看到我这里的Decription上面有个AllowHtml属性,它是ASP.NET MVC 3中新增的,有这个属性的字段,可以从客户端直接输入HTML。。。。但是这个是非常危险的,轻易别使用。我举个例子你就看到这个多牛了:





在Edit页面我们输入一段javascript,点击Save:





会弹出Script。。。。但是这个属性可以用来在页面中演示javascript的运行。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: