在Asp.Net MVC中设置“Homepage”

时间:2009-07-17 08:22:57

标签: c# asp.net-mvc asp.net-mvc-routing

在asp.net MVC中,“主页”(即点击www.foo.com时显示的路线)设置为Home / Index。

  • 此值存储在何处?
  • 如何更改“主页”?
  • 在家庭控制器的Index操作中,有没有比使用RedirectToRoute()更优雅的东西?

我尝试在我的项目中使用Home / Index进行grepping并找不到引用,也无法在IIS(6)中看到任何内容。我查看了root中的default.aspx页面,但这似乎没有做任何相关的事情。

由于

8 个答案:

答案 0 :(得分:145)

查看Default.aspx/Default.aspx.cs和Global.asax.cs

您可以设置默认路线:

        routes.MapRoute(
            "Default", // Route name
            "",        // URL with parameters
            new { controller = "Home", action = "Index"}  // Parameter defaults
        );

只需将控制器/操作名称更改为所需的默认值即可。这应该是路由表中的最后一条路径。

答案 1 :(得分:16)

ASP.NET Core

路由是在Configure类的Startup方法中配置的。设置"主页"只需添加以下内容。当用户导航到您网站的基本网址时,这将导致用户被路由到MapRoute方法中定义的控制器和操作,即,yoursite.com会将用户路由到yoursite.com/foo/index:

app.UseMvc(routes =>
{
   routes.MapRoute(
   name: "default",
   template: "{controller=FooController}/{action=Index}/{id?}");
});

Pre-ASP.NET Core

使用位于App_Start / RouteConfig.cs(MVC 3和4)或Global.asax.cs(MVC 1和2)中的RegisterRoutes方法,如下所示。这将导致用户被路由到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 }
    );
}

答案 2 :(得分:4)

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 }
        );
    }
}

答案 3 :(得分:4)

步骤1:点击解决方案中的Global.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 }
                        );
    }
}

答案 4 :(得分:3)

检查global.asax.cs中的RegisterRoutes方法 - 这是路由配置的默认位置......

答案 5 :(得分:2)

MVC 5中的属性路由

在MVC 5之前,您可以通过调用RouteConfig.cs文件中的routes.MapRoute(...)将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文件中为其他操作和控制器创建新路由,如此,

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操作将映射到网址hey/now。但是,每次要为不同的操作定义路由时,这都会变得乏味。因此,在MVC 5中,您现在可以添加属性以将URL匹配到类似的操作,

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();
    }
}

答案 6 :(得分:1)

我尝试了答案,但它对我没用。这就是我最终做的事情:

创建一个新的控制器DefaultController。在索引操作中,我写了一行重定向:

return Redirect("~/Default.aspx")

在RouteConfig.cs中,更改controller =&#34;默认&#34;为路线。

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
        );

答案 7 :(得分:0)

如果您不想更改路由器,只需转到HomeController 并像这样在索引中更改MyNewViewHere:

    public ActionResult Index()
    {
        return View("MyNewViewHere");
    }