网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

详解ASP.NET MVC Controller激活系统:总体设计

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
om-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" width="421" height="157" src="/uploadfile/201301/5/4F15329914.png" />

为了检验在路由注册时指定的命名空间和作为当前ControllerBuilder的命名空间哪个具有更高匹配优先级,我们修改定义在Global.asax中的路由注册代码。如下面的代码片断所示,我们在调用RouteTable的静态属性Routes的MapRoute方法进行路由注册的时候指定了命名空间(“Artech.MvcApp”)

  1. public class MvcApplication : System.Web.HttpApplication  
  2. {  
  3.     public static void RegisterRoutes(RouteCollection routes)  
  4.     {        
  5.         routes.MapRoute(  
  6.             name: "Default",  
  7.             url: "{controller}/{action}/{id}",  
  8.             defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },  
  9.             namespaces:new string[]{"Artech.MvcApp"}  
  10.        );  
  11.    }  
  12.     protected void Application_Start()  
  13.   {  
  14.       //其他操作  
  15.       RegisterRoutes(RouteTable.Routes);   
  16.      ControllerBuilder.Current.DefaultNamespaces.Add("Artech.MvcApp.Controllers");  
  17.    }  

再次运行我们的程序会在浏览器中得到如图3-3所示的结果,从中可以看出定义在命名空间“Artech.MvcApp”中的HomeController被最终选用,可见较之作为当前ControllerBuilder的默认命名空间,在路由注册过程中执行的命名空间具有更高的匹配优先级,前者可以视为后者的一种后备。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" width="436" height="162" src="/uploadfile/201301/5/D715329657.png" />

在路由注册时指定的命名空间比当前ControllerBuilder的默认命名空间具有更高的匹配优先级,但是对于这两个集合中的所有命名空间却具有相同的匹配优先级。换句话说,用于辅助解析Controller类新的命名空间分为三个梯队,简称为路由命名空间、ConrollerBuilder命名空间和Controller类型命名空间,如果前一个梯队不能正确解析出目标Controller的类型,则将后一个梯队的命名空间作为后备;反之,如果根据某个梯队的命名空间进行解析得到多个匹配的Controlle

  • 上一篇资讯: 详细解读ASP.NET的异步
  • 版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号