1

Если я регистрирую маршрут в области (скажем, он называется Admin) в файле global.asax, а не в файле AdminAreaRegistration.cs области, есть ли причина, по которой я не могу удалить файл 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, что ваш маршрут, указывающий на подкаталог.

Я ожидаю, что вы получите ошибку в какой-то момент.

ЧАС ave посмотрите на msdn AreaRegistration Class documentation он говорит

Предоставляет способ регистрации одной или нескольких областей в приложении ASP.NET MVC.

, хотя он не говорит, что это единственный способ, я думаю, что это может быть так.

+0

Я добавил код для достижения вышеуказанного. Это прекрасно работает, однако я пытаюсь выяснить, есть ли другой код в рамках MVC 3, который может попытаться вызвать класс xxxAreaRegistration на определенном этапе. Если я удалю его, тогда будет пустое исключение. – Chris

+0

Крис, проблема здесь в том, что вы получите сообщение об ошибке, если попытаетесь получить доступ к этой области, не имея зарегистрированного для нее маршрута. Поэтому, пока вы зарегистрировали его, вы не должны получать никаких ошибок при доступе к этой области. Это единственный раз, когда .net понадобится или ищет регистрацию или зарегистрированный маршрут. – shenku

+0

Я не могу проверить сейчас, но на 90% я удалил файл AreaRegistration в Районе и прочно полагался на маршрут AdminAreaRoute в global.asax, и запрос был правильно маршрутизирован. Я дважды проверю следующий шанс. – Chris

Смежные вопросы