Я пытаюсь установить URL По умолчанию своего приложения MVC к представлению в области моего применения. Область называют "Распространенной", контроллер "Домой" и представление "Index".
Я попытался установить defaultUrl в разделе форм web.config к "~/Common/Home/Index" без успеха.
Я также попытался отобразить новый маршрут в global.asax, таким образом:
routes.MapRoute(
"Area",
"{area}/{controller}/{action}/{id}",
new { area = "Common", controller = "Home", action = "Index", id = "" }
);
Снова, напрасно.
Маршрут, который вы перечислили, работает только в том случае, если они явно напечатают URL:
yoursite.com/{area}/{controller}/{action}/{id}
В этом маршруте написано:
Если я получу запрос, который имеет действительный {область}
, действительный {контроллер}
в этой области, и действительный {действие}
в этом контроллере, то перенаправьте его туда.
Вы хотите, чтобы по умолчанию этот контроллер, если они просто заходят на ваш сайт, yoursite.com
:
routes.MapRoute(
"Area",
"",
new { area = "Common", controller = "Home", action = "Index" }
);
Здесь сказано, что если они ничего не добавляют к http://yoursite.com
, то направляют его к следующему действию: Common/Home/Index
Также поместите его в верхнюю часть таблицы маршрутов.
Убедитесь, что вы также сообщаете MVC, чтобы зарегистрировать области, которые у вас есть в приложении:
В своем методе Application_Start
поместите в файл Global.asax.cs
:
AreaRegistration.RegisterAllAreas();
То, что вы делаете, кажется правильным. Если бы мне пришлось догадываться, я бы сказал, что это происходит из-за того, как вы управляете своим сайтом. В Visual Studio, если при нажатии F5 у вас выбрано определенное представление, то это будет стартовое Url - попробуйте выбрать проект, а затем нажмите F5?
.Что вам нужно сделать, это:
Удалить маршрут по умолчанию из global.asax.cs
//// будет создана карта маршрутов по умолчанию в области
// routes.MapRoute (
// name: "Default",
// url: "{controller} / {action} / {id}", { {1}} // по умолчанию: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
//);
Обновить SecurityAreaRegistration.cs в area Common
Добавьте следующее сопоставление маршрута:
context.MapRoute (
"Default",
"",
new {controller = "Home", action = " Индекс ", id =" "}
);