aspnet网站开发实例 ASP.NET MVC 4框架揭秘:CBuilder(3)[1]
![aspnet网站开发实例 ASP.NET MVC 4框架揭秘:CBuilder(3)[1]](http://img.zhputi.com/uploads/797b/797b4eedf56ae1fd659e082555bb776742247.jpg)
ASP.NET MVC 4框架揭秘:CBuilder(3)[1]
ControllerBuilder( )
在解析Controller真实类型的过程中 会先使用RouteData包含的命名空间 如果解析失败 则通过由RouteData的DataTokens属性得到的这个名为 UseNamespaceFallback 的变量值来判断是否使用 后备 命名空间进行解析 具体来说 如果该值为True或者不存在 则先通过当前ControllerBuilder的命名空间解析 如果失败则忽略命名空间直接采用类型名称进行匹配 否则会因找不到匹配的Controller而直接抛出异常
我们通过具体的例子来说明这个问题 在一个ASP NET MVC应用中通过Area添加向导创建一个名称为Admin的Area 此时IDE会默认为我们添加了如下一个AdminAreaRegistration类型
NamespaceMvcApp Areas Admin
{
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get{return Admin ;}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context MapRoute(
Admin_default
Admin/{controller}/{action}/{id}
new { action = Index id = UrlParameter Optional }
)
}
}
}
AdminAreaRegistration类型定义在命名空间MvcApp Areas Admin中 现在我们在该Area中添加如下一个HomeController 在默认的Action方法Index中 我们从当前RouteData的DataTokens中提取这个名为 UseNamespaceFallback 的变量值 并将它和解析出来的Controller类型名称写入当前HttpResponse而最终呈现在客户端浏览器中 在默认情况下 添加的HomeController类型被定义在MvcApp Areas Admin Controllers命名空间下 现在我们刻意将命名空间改为MvcApp Areas Controllers
lishixinzhi/Article/program/net/201311/16090