[转载]ASP.NET MVC 3.0学习系列文章—Controllers in ASP.NET MVC 3.0

[转载]ASP.NET MVC 3.0学习系列文章—Controllers in ASP.NET MVC 3.0 – 爱因斯坦的小脑 – 博客园.

系列文章

ASP.NET MVC 3.0学习系列文章—序

ASP.NET MVC 3.0学习系列文章–Razor and ASP.NET MVC 3.0

ASP.NET MVC 3.0学习系列文章—Controllers in ASP.NET MVC 3.0

image

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

image

1.Introduction

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

2.Global Action Filters

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

image2.gif

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

image

为什么要在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类。

image

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

image8.gif

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

image

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

image

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

3.Caching Child Actions

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

首先我们来定义一个ChildAction:

image

对应的添加一个View叫CurrentTime”

image

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

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

image

运行后:

image

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

image

运行结果:

image

4.The ViewBag

image

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

5.New Action Results

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

a. HttpNotFoundResult

b. HttpRedirectResult

c. HttpStatusCodeResult

6.Request Validation

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

image

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

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

image

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

image

会弹出Script。。。。但是这个属性可以用来在页面中演示JavaScript的运行。。。。。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏