Установить "домашнюю страницу" в Asp.Net MVC
In asp.net MVC "Домашняя страница" (т. е. маршрут, который отображается при ударе www.foo.com) имеет значение Home / Index .
- где хранится это значение?
- как я могу изменить "домашнюю страницу"?
- есть ли что-нибудь более элегантное, чем использование RedirectToRoute() в действии индекса домашнего контроллера?
Я попробовал grepping для Home / Index в моем проекте и не смог найти ссылку, и я ничего не видел в IIS (6). Я посмотрел на по умолчанию.страница aspx в корне, но это, похоже, не делало ничего релевантного.
спасибо
7 ответов:
посмотреть
Default.aspx/Default.aspx.csи глобального.асакс.csвы можете настроить маршрут по умолчанию:
routes.MapRoute( "Default", // Route name "", // URL with parameters new { controller = "Home", action = "Index"} // Parameter defaults );просто измените имена контроллера / действия на желаемое значение по умолчанию. Это должен быть последний маршрут в таблице маршрутизации.
ASP.NET ядро
маршрутизация настроена в
ConfigureметодStartupкласса. Чтобы установить "домашнюю страницу", просто добавьте следующее. Это приведет к тому, что пользователи будут перенаправлены на контроллер и действие, определенное в методе MapRoute, когда / если они перейдут к базовому URL-адресу вашего сайта, т. е. yoursite.com будет ли маршрут пользователей yoursite.com/foo/index:app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=FooController}/{action=Index}/{id?}"); });Pre-ASP.NET Ядро
используйте метод RegisterRoutes, расположенный в любом App_Start / RouteConfig.цезий (MVC 3 и 4) или глобальный.асакс.cs (MVC 1 и 2), как показано ниже. Это приведет к тому, что пользователи будут перенаправлены на контроллер и действие, определенное в методе MapRoute, если они перейдут к базовому URL-адресу вашего сайта, т. е. yoursite.com будет маршрутизировать пользователя yoursite.com/foo/index:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller. routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional } ); }
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional } ); } }
проверьте метод RegisterRoutes в глобальном.асакс.cs-это место по умолчанию для конфигурации маршрута...
Шаг 1: Нажмите на глобальном.файл asax в вашем решении.
Шаг 2: Затем перейдите к определению
RouteConfig.RegisterRoutes(RouteTable.Routes);Шаг 3: измените имя контроллера и имя представления
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
маршрутизация атрибутов в MVC 5
перед MVC 5 Вы можете сопоставить URL-адреса с конкретными действиями и контроллерами, вызвав
routes.MapRoute(...)в RouteConfig.cs-файл. Здесь хранится url-адрес главной страницы (Home/Index). Однако, если вы измените маршрут по умолчанию, как показано нижеroutes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );имейте в виду, что это повлияет на URL других действий и контроллеры. Например, если у вас есть класс с именем
ExampleControllerи метод действия внутри него называетсяDoSomething, тогда как ожидается, по умолчанию URL-адресExampleController/DoSomethingбольше не будет работать, потому что маршрут по умолчанию был изменен.обходной путь для этого-не связываться с маршрутом по умолчанию и создавать новые маршруты в RouteConfig.cs-файл для других действий и контроллеров, таких как so,
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( name: "Example", url: "hey/now", defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional } );теперь
DoSomethingдействиеExampleControllerкласс будет сопоставлен с urlhey/now. Но это может быть утомительно делать каждый раз, когда вы хотите определить маршруты для различных действий. Так что в MVC 5 теперь вы можете добавить атрибуты, соответствующие URL-адресам для таких действий, как so,public class HomeController : Controller { // url is now 'index/' instead of 'home/index' [Route("index")] public ActionResult Index() { return View(); } // url is now 'create/new' instead of 'home/create' [Route("create/new")] public ActionResult Create() { return View(); } }
я попробовал ответить, но это не сработало для меня. Вот что я делал:
создать новый контроллер DefaultController. В действии индекса я написал одну строку redirect:
return Redirect("~/Default.aspx")В RouteConfig.cs, change controller= "Default" для маршрута.
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional } );
Comments