MVC - RegisterRoutes

Kel*_*vin 4 c# url model-view-controller rewrite routes

我想重写网址

http://localhost:51639/home/index?id=123
Run Code Online (Sandbox Code Playgroud)

http://localhost:51639/home/product
Run Code Online (Sandbox Code Playgroud)

这是我在Global.asax.cs中的代码

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        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)

我能做什么?非常感谢

Nik*_*sik 5

重要的是顺序,因为MVC首先搜索与RouteCollection的匹配并返回一个url.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(null, "home/product/{id}", new {
            controller = "Home", action = "Index",
            id = UrlParameter.Optional}
    );
    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)