Я нашел то, что я считаю ошибкой во фреймворке с обходным решением.Если вы пытаетесь сопоставить маршрут по умолчанию приложению MVC 3 с областями, ваш файл global.asax может выглядеть примерно так:
VB:
routes.MapRoute(
"Default",
"{area}/{controller}/{action}/{id}",
New With {.area = "MyArea", .controller = "Home", .action = "Index", .id = UrlParameter.Optional}
)
C #:
routes.MapRoute(
"Default",
"{area}/{controller}/{action}/{id}",
new { area = "MyArea", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Если вы перейдете к корню своего приложения по URL-адресу, вы можете получить сообщение об ошибке во время выполнения, например:
Представление «Индекс» или его мастер не найдены или отсутствует механизм просмотраподдерживает поиск мест.Были найдены следующие местоположения:
По какой-то причине механизм просмотра не выглядит в папке области для файла представления так же, как при вводе всей ссылки.Странно то, что код достигает действия контроллера.Вот исправление: вставьте этот код в действие вашего контроллера:
VB:
If Not Me.ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
Me.ControllerContext.RouteData.DataTokens.Add("area", "MyArea")
End If
C #
if (!this.ControllerContext.RouteData.DataTokens.ContainsKey("area"))
{
this.ControllerContext.RouteData.DataTokens.Add("area", "MyArea")
}