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

时间:2014-06-18 13:51:50

标签: asp.net-mvc-4

我有以下定义路线,

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

在运行时,我的项目的网址就像" http://example.com:7549/nhj/pm"和" http://example.com:7549/nhj/sp"

但是,当使用方法Url.Action(&#34;编辑&#34;,&#34;产品&#34;)时,Url已由方法Url生成。动作始终为"http://example.com:7549/nhj/sp/Product/Edit"。< / p>

如何使用方法Url.Action(&#34;编辑&#34;,&#34;产品&#34;)生成两个不同的网址&#34; http://example.com:7549/nhj/pm/Product/Edit&#34 ;和&#34; http://example.com:7549/nhj/sp/Product/Edit&#34;与上述2条路线相匹配。

你能帮助我吗?感谢

1 个答案:

答案 0 :(得分:2)

在生成网址时使用使用路径名称的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" });

请参阅MSDN