如果我在global.asax
文件而不是区域的AdminAreaRegistration.cs
文件中注册到区域的路由(称为Admin),是否有任何理由不能删除AdminAreaRegistration.cs
文件?框架中是否有其他代码可能会在某个阶段调用它,如果它丢失了,可能会引发异常?我可以删除xxxxxxxAreaRegistration.cs吗?
作为询问意见,这里是在Global.asax中
routes.MapRoute(
"AdminAreaRoute",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Admin.Controllers" }
).DataTokens.Add("Area", "Admin");
routes.MapRoute(
"SiteAreaRoute",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "/|Home|Account" }, // Constraint's on the URL (second param above) {controller} segment
new string[] { "Payntbrush.Presentation.Demo.MVC3.Areas.Site.Controllers" }
).DataTokens.Add("Area", "Site");
的关键是使用DataTokens收集来注册区,由菲利普·海登在this excellent post突出的代码。您可以根据需要添加任意数量,但请确保将根网站区域放在明确命名的区域之后,以便{controller}/{action}/{id}
在其他映射路由之前不会捕获所有请求。
我已经添加了代码来实现上述目的。这工作正常,但是我试图找出是否有其他代码在MVC 3框架内可能会尝试并在某个阶段调用xxxAreaRegistration类。如果我删除它,那么会有一个空例外。 – Chris 2012-02-16 05:53:42
克里斯,这里的问题是,如果您尝试访问该区域而未注册路由,则会出现错误。所以只要你注册了它,你在访问该区域时就不会有任何错误。这是.net需要或寻找区域注册或注册路线的唯一时间。 – shenku 2012-02-16 22:01:27
我现在无法检查,但是我有90%的存在,我删除了区域中的AreaRegistration文件,因此依赖global.asax中的“AdminAreaRoute”路由,请求被正确路由。我会再次检查我得到的下一个机会。 – Chris 2012-02-16 22:41:56