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

《Pro ASP.NET MVC 3 Framework》学习笔记之二十二【Controllers和Actions】

2012-03-06 22:12 721 查看
Controllers入门(Introducing the Controller)

每一个针对应用程序的请求都是通过Controller处理的,controller自由地选择合适的方式来处理这些请求,只要它不偏离到View和Model所负责的区域。这样意味着我们不要把业务或数据存储的逻辑放到Controllers里面,也不要创建用户接口。

在ASP.NET MVC框架里面,Controllers是包含必要的处理请求的.NET类。前面有解释Controller的角色是封装我们的应用程序逻辑。这意味着Controller是负责处理请求,实行对Model的操作,选择View呈现给用户。本次的笔记会介绍Controllers是怎样被实现的以及我们能够接收和创建输出的不同方式。

MVC框架本身并没有限定我们通过View创建HTML,并且会讨论其他可用的选择。同时也会展示Actions方法是如何让单元测试变得简单,以及阐释怎样测试每一种由Actions产生的Results。

下面通过新建一个Project来说明,创建一个ControllersAndActions的项目,选择Empty Template.

1.创建一个实现IController的Controller

在MVC框架里面,Controller类必须实现IController接口:如下

public interface IController { void Execute(RequestContext requestContext); }

这是一个非常简单的接口,只有一个Execute方法,当一个请求在Controller类里面被命中时调用。MVC框架通过读取由routing data创建的Controller属性的值来知道哪一个Controller类被命中。我们能够通过实现IController接口来创建一个Controller类,但是这是非常低级的接口,并且我们要做很多的工作来让Controller变成可用的。

下面的BasicController提供了一个展示。

View Code

@{
ViewBag.Title = "MyView";
}
<h2>
MyView</h2>
Message:@ViewBag.Message<br />
Num:@ViewBag.Num


运行抛如下异常:



理解参数对象是怎样被实例化的

Controller基类使用MVC框架的Value Providers(值提供程序)和Model Binders(模型绑定)两个组件来获取action方法参数的值
Value Providers将可用的数据项集合呈现给controller,有内置的value providers从Request.Form, Request.QueryString, Request.Files,RouteData.Values获取数据项。然后这些值会被传递给模型绑定(Model Binders)——将这些值映射到action方法需要的参数的类型。默认的model binders能够创建和填充任何.NET类型的对象,并包含自定义的类型和集合。

理解可选和必须的参数

如果MVC框架不能找到一个引用类型参数的值,action方法仍然会被调用,但是使用的null值。如果是一个值类型的值没有找到,那么会发生异常并且action方法不会被调用。

①值类型的从参数是必须的被赋值的。如果想让这个跟引用类型一样,可以这样定义int?,当依然没有找到值时,不会发生异常,而是会传递null值。
②引用类型的参数是可选的。为了让它变成必选的(保证一个非空的值被传递),在action方法的上面添加一些代码拒绝null值

指定默认参数的值

如果我们要处理不包含action方法参数值的请求,但是又不想去检查null值。这时可以使用C#可选参数的特性,如下:
public ActionResult Search(string query="all",int page=1){...}

今天的笔记就到这里,后面一篇笔记还是关于这部分的内容。笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐