深入分析ASP.NET Mvc 1.0 – 1. 深入MvcHandler
routeNamespacesObj)) { IEnumerable<string> routeNamespaces = routeNamespacesObj as IEnumerable<string>; if (routeNamespaces != null) { HashSet<string> nsHash = new HashSet<string>(routeNamespaces, StringComparer.OrdinalIgnoreCase); match = GetControllerTypeWithinNamespaces (controllerName, nsHash); if (match != null) { return match; } } } // then search in the application''s default namespace collection HashSet<string> nsDefaults = new HashSet<string>(ControllerBuilder.DefaultNamespaces, StringComparer.OrdinalIgnoreCase); match = GetControllerTypeWithinNamespaces(controllerName, nsDefaults); if (match != null) { return match; } // if all else fails, search every namespace return GetControllerTypeWithinNamespaces(controllerName, null /* namespaces */); } RequestContext.RouteData.DataTokens.TryGetValue("Namespaces", out routeNamespacesObj) 来返回一个namespace的集合,一开始我对namespace很不理解,现 在我明白了它的意思:在程序中不同的namespace下面可能会存在同名的controller,所 以这里用 namespace区分这些同名的但不同意义的controller。namespace可以在 Global.asax.cs的 RegisterRoutes(…)方法中指定,比如:
在继续看GetControllerType(…)方法,在GetControllerType(string controllerName) 方法中最终都是通过调用GetControllerTypeWithinNamespaces(…)方 法返回controller type的, 具体代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |