Если я регистрирую маршрут к области (скажем, он называется Admin) в файле global.asax
, а не в файле AdminAreaRegistration.cs
, есть ли причина, по которой я не могу удалить файл AdminAreaRegistration.cs
?Есть ли какой-либо другой код в структуре, который может вызвать его на каком-то этапе, который может вызвать исключение, если оно отсутствует?
Как указано в комментариях, вот код для регистрации области в глобальном.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, как подчеркивается в этом превосходном сообщении Филиппа Хейдона.Вы можете добавить столько, сколько захотите, но убедитесь, что вы ставите область корневого сайта после явно названных областей, чтобы {controller}/{action}/{id}
не перехватывал все запросы раньше, чем другие маршруты маршрута.