1

如果我在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}在其他映射路由之前不会捕获所有请求。

回答

0

我删除了这些文件,到目前为止没有任何问题。我会假设在我遇到任何问题之前它是可以的。

0

您可以发布您正在使用的代码在global.asax中注册您的区域吗?

,我问,我不认为它在技术上是可能得到工作正确没有在其他地方的项目实施(即便xxxAreaRegistration.cs类的区域的原因。

这似乎是它是工作,没有它,但在现实中,我认为你可能只是告诉你的路由指向一个子目录.NET。

我希望你在某些时候得到一个错误。

H看看msdn AreaRegistration Class documentation它说

提供了一种方法来注册ASP.NET MVC应用程序中的一个或多个区域。

虽然它没有说它是唯一的方法,我认为可能是这样。

+0

我已经添加了代码来实现上述目的。这工作正常,但是我试图找出是否有其他代码在MVC 3框架内可能会尝试并在某个阶段调用xxxAreaRegistration类。如果我删除它,那么会有一个空例外。 – Chris 2012-02-16 05:53:42

+0

克里斯,这里的问题是,如果您尝试访问该区域而未注册路由,则会出现错误。所以只要你注册了它,你在访问该区域时就不会有任何错误。这是.net需要或寻找区域注册或注册路线的唯一时间。 – shenku 2012-02-16 22:01:27

+0

我现在无法检查,但是我有90%的存在,我删除了区域中的AreaRegistration文件,因此依赖global.asax中的“AdminAreaRoute”路由,请求被正确路由。我会再次检查我得到的下一个机会。 – Chris 2012-02-16 22:41:56