asp.net mvc 3 зоны и настройка маршрутизации URL
У меня проблема с созданием маршрутизации ulr для приложения asp.net mvc3.
Мой проект имеет такую структуру:
- районы
- EmployeeReport
- Контроллеры
- отчет
- Просмотры
- отчет
- Список
- ....
- отчет
- Контроллеры
- EmployeeReport
- Контроллеры
- Авторизоваться
- Viwes
- Авторизоваться
- ...
- Авторизоваться
EmployeeReportAreaRegistration.cs:
public class EmployeeReportAreaRegistration : AreaRegistration { public override string AreaName { get { return "EmployeeReport"; } } public override void RegisterArea(AreaRegistrationContext context) { var routes = context.Routes; routes.MapRoute(null, "vykazy/vykazy-zamestnance", new { Area = "EmployeeReport", controller = "Report", action = "List" }); } }
Global.asax:
routes.MapRoute(null, "prihlasit", new { controller = "Login", action = "Login" }); routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Default", action = "Welcome", id = UrlParameter.Optional });
When i try load "http://localhost/app_name/vykazy/vykazy-zamestnance i get this exception : The view 'List' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Report/List.aspx ~/Views/Report/List.ascx ~/Views/Shared/List.aspx ~/Views/Shared/List.ascx ~/Views/Report/List.cshtml ~/Views/Report/List.vbhtml ~/Views/Shared/List.cshtml ~/Views/Shared/List.vbhtml
Ну где я ошибаюсь?
Спасибо
2 ответа
Решение
Пересмотренный ответ:
Добавление в Context.Routes напрямую означает, что оно теряет любую информацию об областях.
Либо используйте AreaRegistration.MapRoute (которое переопределяется для помещения в информацию о зоне).
context.MapRoute(...);
Или поместите область в параметр DataTokens (а не параметр по умолчанию, как здесь)
context.Routes.MapRoute("", "url", new {...}, null, new {area = this.AreaName});
Структура вашей папки для вашего региона должна выглядеть так:
- районы
- EmployeeReport
- Контроллеры
- Просмотры
- EmployeeReport