Asp.net mvc 4 在UrlHelper MVC4中使用方法Url.Action时如何切换路由

Asp.net mvc 4 在UrlHelper MVC4中使用方法Url.Action时如何切换路由,asp.net-mvc-4,Asp.net Mvc 4,我有下面的路线 routes.MapRoute( name: "sp", url: "sp/{controller}/{action}/{id}", defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional } ); routes.MapRo

我有下面的路线

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

            routes.MapRoute(
                name: "pm",
                url: "pm/{controller}/{action}/{id}",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );
运行时,我的项目的url类似于“”和“”

但是,当使用方法Url.Action(“编辑”、“产品”)时,Url是由方法Url生成的。Action总是
“http://example.com:7549/nhj/sp/Product/Edit“

如何使用方法Url.Action(“编辑”、“产品”)生成两个不同的Url,它们分别为“”和“”,与上面的两个路由匹配

有人能帮我吗???感谢使用生成Url时使用路由名称的
Url.RouteLink()

// for SP route
Url.RouteUrl("sp", new { action = "Edit", controller = "Product" });

// for PM route
Url.RouteUrl("pm", new { action = "Edit", controller = "Product" });
使用返回的Url从操作重定向时,请使用:

// for SP route
return RedirectToRoute("sp", new { action = "Edit", controller = "Product" });

// for PM route
return RedirectToRoute("pm", new { action = "Edit", controller = "Product" });

请参阅。

谢谢您的回答,但是,如果生成“”url,怎么办?我修改了答案。谢谢您,但在控制器中使用方法RedirectToAction时仍然重定向到不同的url,无法控制它…因为在当前源代码中,url.Action在许多地方使用,所以从url.Action到url.RouteUrl的修改需要很长时间。是否有任何方法可以更改URLHeleper当前的使用路径???然后,只需调用URL.Action,取决于当前路由,AppReRoad URL将出现,因为规则<代码> URL。Action < /COD>助手不考虑当前路由,您必须介绍自己的超载,这也意味着更改调用函数的方式(可能添加一个摘录<代码> BOOL 参数)。因此,在您调用
Url.Action
的所有位置都必须进行更改。