《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
运行抛如下异常:
理解参数对象是怎样被实例化的
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){...}
今天的笔记就到这里,后面一篇笔记还是关于这部分的内容。笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安!
每一个针对应用程序的请求都是通过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){...}
今天的笔记就到这里,后面一篇笔记还是关于这部分的内容。笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安!
相关文章推荐
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十四【Controllers和Actions】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.12.ASP.NET MVC3的细节:URLs,Routing和Areas
- 《Pro ASP.NET MVC 3 Framework》学习笔记之六【C#部分特性】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.7.SportsStore:购物车
- Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.4.MVC的主要工具-使用Moq
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.6.SportsStore:导航
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十七【视图1】
- Pro ASP.NET MVC 5 Framework.学习笔记.6.4.MVC的必备工具
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.10.SportsStore:上传图片
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十【URL和Routing】
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十五
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.9.SportsStore:Securing the Administration Features
- 《Pro ASP.NET MVC 3 Framework》学习笔记之十六【示例项目SportsStore】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.1.主要语言特性
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.3.MVC的主要工具-单元测试
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十三【Controllers和Actions】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十一【Area及URL架构的最佳实践】
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.2.MVC的主要工具-Ninject