ASP.NET MVC Просмотр URL по умолчанию - PullRequest
14 голосов
/ 05 января 2010

Я пытаюсь установить URL-адрес по умолчанию для моего приложения MVC для просмотра в области моего приложения. Область называется " Common ", контроллер " Home " и вид " Index ".

Я попытался установить defaultUrl в разделе форм файла web.config на " ~ / Common / Home / Index ", но безуспешно.

Я также попытался отобразить новый маршрут в global.asax, таким образом:

routes.MapRoute(
        "Area",
        "{area}/{controller}/{action}/{id}",
        new { area = "Common", controller = "Home", action = "Index", id = "" }
    );

Опять безрезультатно.

Ответы [ 4 ]

13 голосов
/ 05 января 2010

Маршрут, который вы перечислили, работает, только если они явно набирают 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();
7 голосов
/ 24 февраля 2010

Что вам нужно сделать, это:

  • Удалить маршрут по умолчанию из 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 в области Common

  • Добавить следующее отображение маршрута:

     context.MapRoute(
        "Default",
        "",
        new { controller = "Home", action = "Index", id = "" }
    );
    
0 голосов
/ 12 марта 2012

в 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
}
0 голосов
/ 05 января 2010

То, что вы делаете, кажется правильным. Если бы мне пришлось угадывать, я бы сказал, что это происходит из-за того, как вы работаете на своем сайте. В Visual Studio, если у вас выбрано определенное представление при нажатии клавиши F5, это представление будет исходным URL-адресом - попробуйте выбрать проект и нажать F5?

...