MVC 4从基本路线中删除"home"

BRo*_*ers 34 asp.net-mvc asp.net-mvc-routing asp.net-mvc-4

基本上我想这样做:http: //website.com/Home/About

显示为:http: //website.com/About

显示在URL中的"home"控制器将使用户更长的URL读取.

我试着做以下事情:

routes.MapRoute(
            name: "About",
            url: "",
            defaults: new { controller = "Home", action = "About", id = UrlParameter.Optional }
            );
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

web*_*per 56

尝试这样的事情:

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "OnlyAction",
        "{action}",
        new { controller = "Home", action = "Index" } 
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
Run Code Online (Sandbox Code Playgroud)

  • 如果使用多个控制器,则不起作用 (11认同)

小智 8

试试这个.它还会使您的URL小写.

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.LowercaseUrls = true;

        routes.MapMvcAttributeRoutes();

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

在您的家庭控制器中:

    [Route("About")]
    public ActionResult About()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)