Как установить контроллер по умолчанию в asp.net MVC 4 и MVC 5

Как установить контроллер по умолчанию для моего проекта ASP.NET MVC 4, не делая его HomeController?

Как настроить Область по умолчанию при запуске приложения?


person Adrian10 BEN    schedule 20.01.2013    source источник
comment
как будет меняться с / на / home в качестве корневой страницы? Этот /home должен быть виден в браузере клиента.   -  person Andre Mesquita    schedule 25.02.2015


Ответы (4)


лучший способ - изменить маршрут. Маршрут по умолчанию (определенный в вашем App_Start) устанавливает /Home/Index

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);

в качестве целевой страницы по умолчанию. Вы можете изменить это на любой маршрут, который вы хотите.

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);
person Dave Alperovich    schedule 20.01.2013
comment
В MVC 4 маршрут по умолчанию задается в файле App_Start/RouteConfig.cs. - person Eric Labashosky; 18.03.2013
comment
Очень верно. В настоящее время я работаю над проектами в обоих и пропускаю эти вещи;) - person Dave Alperovich; 18.03.2013
comment
Дэйв прав, но я хотел бы добавить, что в MVC 4 маршрутизация больше не выполняется в Global.asax, а скорее в RouteConfig.cs в разделе App_Start. - person Good Samaritan; 13.06.2013
comment
Как заставить это работать, когда контроллер, указанный в маршруте по умолчанию, находится в другой области (то есть не в корневой)? - person superjos; 28.08.2013
comment
вы должны иметь возможность настроить маршрут по умолчанию на "AreaName/{controller}/{action}/{id}" - person Dave Alperovich; 28.08.2013

Установите приведенный ниже код в файле RouteConfig.cs в папке App_Start.

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional });
}

ЕСЛИ все еще не работает, выполните следующие шаги

Второй способ: вы просто выполняете следующие шаги,

1) Щелкните правой кнопкой мыши свой проект

2) Выберите Свойства

3) Выберите опцию «Веб», а затем «Выбрать конкретную страницу (контроллер/представление)», а затем установите страницу входа в систему.

Здесь Account — это мой контроллер, а Login — мой метод действия (сохраненный в Account Controller).

Пожалуйста, взгляните на прикрепленный скриншот введите описание изображения здесь.

person Nimesh    schedule 04.08.2014
comment
Ваш второй способ касается того, что происходит, когда вы отлаживаете свой веб-проект. Это не имеет ничего общего с контроллером по умолчанию, то есть с тем, какая страница отображается при переходе на целевую страницу вашего сайта. - person Martin Liversage; 10.09.2014

Я не видел ответа на этот вопрос:

Как настроить Область по умолчанию при запуске приложения?

Итак, вот как вы можете настроить область по умолчанию:

var route = routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    ).DataTokens = new RouteValueDictionary(new { area = "MyArea" });
person Amna Ali    schedule 31.12.2013
comment
отличный вопрос, почему бы вам не создать его как один? - person stuartdotnet; 22.04.2014
comment
Что такое «Площадь»? Если я определяю представление, загружается ли указанный макет, а затем отдельный HTTP-запрос с данными моего представления? (т. е. отдельная операция Ajax) или макет отображается и обертывается вокруг моего представления? - person Gus Crawford; 05.11.2014
comment
@GusCrawford Что такое «область»? Из msdn.microsoft.com/en-us/library/ ee671793(VS.100).aspx: для размещения больших проектов ASP.NET MVC позволяет разбивать веб-приложения на более мелкие единицы, называемые областями. Области позволяют разделить большое веб-приложение MVC на более мелкие функциональные группы. Область фактически представляет собой структуру MVC внутри приложения. Приложение может содержать несколько структур (областей) MVC. - person Amna Ali; 05.11.2014
comment
Что касается другого вопроса, я не думаю, что он связан с этим ответом, и он не кажется актуальным даже для исходного вопроса. Может быть, вы должны разместить его в другом месте. - person Amna Ali; 05.11.2014
comment
Спрошу отдельно в новой теме ответ спасибо за перспективу. - person Gus Crawford; 05.11.2014
comment
Кому-нибудь еще, чтобы завершить это, вам также нужно будет добавить пространство имен к вашему маршруту по умолчанию (я нашел иначе, хотя я мог получить правильную страницу по умолчанию, все другие ссылки на контроллеры в области по умолчанию ничего не могли найти), a ля: stackoverflow.com/a/21711800/753471 - person monty; 18.05.2015
comment
Работает на меня. Спасибо Амна. - person Richard; 31.07.2015
comment
Это то, что я ищу @Amna Ali - person Vishnu Vikraman; 16.09.2015

Если у вас есть только один контроллер и вы хотите получить доступ ко всем действиям в корне, вы можете пропустить имя контроллера, как это

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
person Manjoor    schedule 01.06.2017