C# MVC-注册表项

C# MVC-注册表项,c#,model-view-controller,url,routes,rewrite,C#,Model View Controller,Url,Routes,Rewrite,我想从中重写url http://localhost:51639/home/index?id=123 到 这是我在Global.asax.cs中的代码 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", //

我想从中重写url

http://localhost:51639/home/index?id=123

这是我在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
        );
    }

我能做什么?非常感谢

订单很重要,因为MVC首先使用RouteCollection搜索fit并返回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
    );
}

如果您使用的是MVC 5,则可以使用自定义路由参数,即
[route(“home/product/{id:int}”)]
。它对于一次性路由非常有用,因为您可以在传递的参数中指定类型,所以它不会与您可能需要的其他深度路由冲突

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