Просмотр 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
}