ASP.NET MVC的运行机制--url的全局分析

来源:互联网 发布:淘宝机械键盘 编辑:程序博客网 时间:2024/05/19 11:48

        

 

首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerName/ActionName/Parameters的 样子。这个请求被ASP.NET MVC的路由映射系统截获。路由映射系统按照映射规则,解析出控制器名 ControllerName,Action名ActionName和各个参数Parameters,然后,找寻Controllers目录下的 ControllerNameController.cs这个控制器类,默认情况下,系统总是找寻Controllers目录下的“控制器 名+Controller”这么一个类,然后,找寻这个类下与ActionName同名的方法,找到后,将Parameters作为参数传给这个方法,而 后Action方法开始执行,完成后返回相应视图,默认情况下,会返回Views目录下与ControllerName同名的目录下的与 ActionName同名的aspx文件,并且将ViewData传递到视图。ViewData中一般包含了控制视图显示的控制量以及视图显示需要的数据。

 

路由
      从上面可以看出,ASP.NET MVC中路由是很重要的。它直接决定了如何解析url,因此决定了系统如何工作。

上面的匹配规则中,三个匹配段都带大括号的,都是参数匹配,下面我们来说说强字符串匹配。例如,我们有一个url需要这样http://localhost/Category/Detail/Name。如果按照上面的匹配规则,Name段的值会被匹配到id中去,可是我们想在CategoryController的Detail方法中使用名叫“name”的参数而不是使用名叫“id”的参数,

可以看到,我们在默认规则前增加了一条规则,其中控制器名和Action名不再是参数,而变成了强字符串(没有{})。这时,当我们请求的url是http://localhost/Cateogry/Detail/para的形式时,就会直接匹配新加的规则,而para的值不会被赋给成id而是赋给名叫name的变量。
      需要注意的是,我们新的路由规则一定要放在前面,因为ASP.NET MVC会自上向下匹配第一条找到的可匹配路由规则。

视图
     Action方法返回类型是ActionResult,其实这个返回类型不局限于View方法返回ViewResult,它还有很多实现,这里列举几个。
      ViewResult:一般呈现某个aspx文件,由View方法返回。
      RedirectToResult:使浏览器重定向,由Redirect方法返回。
      RedirectToRouteResult:直接交给下一个Action,由RedirectToAction方法返回。

0 0
原创粉丝点击