Просмотр URL URL-адреса ASP.NET MVC
Я пытаюсь установить URL-адрес по умолчанию моего приложения MVC для представления в области моего приложения. Область называется " Обычная", контроллер " Главная" и представление " Индекс".
Я попытался установить defaultUrl в разделе форм web.config на " ~/Common/Home/Index" без успеха.
Я также попытался сопоставить новый маршрут в global.asax, таким образом:
routes.MapRoute(
"Area",
"{area}/{controller}/{action}/{id}",
new { area = "Common", controller = "Home", action = "Index", id = "" }
);
Опять же, безрезультатно.
Ответы
Ответ 1
Указанный вами маршрут работает только в том случае, если они явно отображают URL-адрес:
yoursite.com/{area}/{controller}/{action}/{id}
Что говорит этот маршрут:
Если я получаю запрос с допустимым {area}
, допустимым {controller}
в этой области и допустимым {action}
в этом контроллере, тогда проложите его там.
Что вы хотите, так это по умолчанию для этого контроллера, если они просто посещают ваш сайт, 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();
Ответ 2
Что вам нужно сделать:
-
Удалить маршрут по умолчанию из global.asax.cs
//// default route map will be create under area
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//);
-
Обновить SecurityAreaRegistration.cs в области Общие
-
Добавить следующее сопоставление маршрутов:
context.MapRoute(
"Default",
"",
new { controller = "Home", action = "Index", id = "" }
);
Ответ 3
То, что вы делаете, кажется правильным. Если бы я должен был догадаться, я бы сказал, что это происходит из-за того, как вы управляете своим сайтом. В Visual Studio, если у вас есть определенное представление, выбранное при нажатии F5, это представление будет начальным URL-адресом - попробуйте выбрать проект, а затем нажать F5?
Ответ 4
В Global.asax
удалить .MapRoute
и сделайте его похожим на
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}
то под областью yourareaAreaRegistration.cs(ее там, если вы добавили область через VS)
public override void RegisterArea(AreaRegistrationContext context)
{
//This is the key one
context.MapRoute("Root", "", new { controller = "Home", action = "Login" });
//Add more MapRoutes if needed
}