Asp.net mvc 3 ASP.NET MVC 3.0 Url重写

Asp.net mvc 3 ASP.NET MVC 3.0 Url重写,asp.net-mvc-3,url-rewriting,Asp.net Mvc 3,Url Rewriting,我在家庭控制器中有一个名为“联络”的动作 <mysite>/Home/Contact 路线逻辑: var route = routes.MapRoute("new", "Contact"); routes.Redirect(r => r.MapRoute("old", "Home/Contact")) .To(route); 更新 好的,首先应该定义自定义路由,现在它正在工作(对于自定义路由),但是出现了一个新问题为什么

我在家庭控制器中有一个名为“联络”的动作

<mysite>/Home/Contact
路线逻辑:

 var route = routes.MapRoute("new", "Contact");
            routes.Redirect(r => r.MapRoute("old", "Home/Contact"))
              .To(route);
更新

好的,首先应该定义自定义路由,现在它正在工作(对于自定义路由),但是出现了一个新问题
为什么路由魔法返回错误

Server Error in '/' Application.
Value cannot be null or empty.
Parameter name: controllerName

你试过iis7中的重写模块吗

它很容易使用,请不要从这里下载:


定义路由时,确保新路由出现在默认路由之前(因为它也将匹配)

routes.MapRoute(
    "Contact", // Route name
    "contact", // URL with parameters
    new { controller = "Home", action = "Contact", id = UrlParameter.Optional } // Parameter defaults
);

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

我看到了,但是最好使用MVC路由的默认优势。@Joper-默认路由应该是最后添加的路由,以便首先匹配任何特定路由。您可能知道为什么RouteMagic在这种情况下返回错误的值不能为null或空。参数名称:controllerName'
routes.MapRoute(
    "Contact", // Route name
    "contact", // URL with parameters
    new { controller = "Home", action = "Contact", id = UrlParameter.Optional } // Parameter defaults
);

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