Установить "домашнюю страницу" в Asp.Net MVC



In asp.net MVC "Домашняя страница" (т. е. маршрут, который отображается при ударе www.foo.com) имеет значение Home / Index .




  • где хранится это значение?

  • как я могу изменить "домашнюю страницу"?

  • есть ли что-нибудь более элегантное, чем использование RedirectToRoute() в действии индекса домашнего контроллера?


Я попробовал grepping для Home / Index в моем проекте и не смог найти ссылку, и я ничего не видел в IIS (6). Я посмотрел на по умолчанию.страница aspx в корне, но это, похоже, не делало ничего релевантного.



спасибо

778   7  

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 класс будет сопоставлен с url hey/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

    Ничего не найдено.