3.1控制器的角色
MVC模式中的控制器(Controller)主要用于响应用户的输入,并修改相应的模型(Module)。它主要关注应用程序流,对输入的数据进行处理,输出相应视图(View)。URL告知路由器去实例化哪个控制器,调用哪个方法,并为该方法提供需要的参数,然后由控制器的方法决定哪个视图,并随后对该视图进行渲染。
URL不与存储在WEB服务器磁盘上的文件有直接对应关系,而与控制器的一个方法有关。ASP.NET MVC实现对MVC模式中的前端控制器进行了改造,路由子系统在最前面,其次是控制器。
3.2控制器基础
3.2.1简单示例:Home Controller
使用Internet Application模板创建的项目包含两个控制器类:
1、HomeController----负责网站根目录下的Home Page和About Page
2、AccountController—负责对账户请求进行处理
在VS的项目中,展开/Controller文件夹,打开HomeController.cs文件,截图如下:
它是一个相当简单的类,继承了Controller基类,Index方法负责访问首页时进行处理,并调用Index视图进行输出。
经验总结:
1、不需要做任何额外配置,浏览到/Home/Index就可以执行IndexController类中的Index方法,这就是操作中的路由。
2、 控制器类继承了System.Web.Mvc.Controller.
3、控制器是MVC的核心,任何用户输入都需要经过控制器处理,由控制器决定调用哪个方法,返回视图或String
3.2.2控制器操作中的参数
控制器中方法参数可以通过以下两种方法进行传递:
1、通过URL中的查询字符串进行传递参数,如:
//Get:/Store/Browse?genre=Disco
Public string Browser(string genre)
{
Return genre;
}
2、将参数嵌入到URL中进行传递,如:
//GET:/Store/Details/5
Public string Detail(int id)
{
Return id.toString();
}
上述两者参数实现原理:路由器把URL映射成相应操作,包括传递的参数、调用的控制器、方法以及视图的输出。
总结:
控制器是MVC应用程序的指挥员,它精心紧密的编排用户、模块对象和视图的交互。它同时响应用户的输入,调用正确的模块,输出合适的视图,来响应用户的请求。