在asp.net mvc

时间:2016-03-22 17:14:37

标签: asp.net-mvc routes

在我的ASP.Net mvc应用程序中,我已将startup.cs中的默认路由注册更改为

routes.MapRoute(
    name: "default",
    template: "{customer}/{language=fi-FI}/{controller=Home}/{action=Index}/{id?}");

因此所有路线都包含客户ID和当前语言。自定义段匹配负责将客户和语言信息放在新的URL中,因此当请求的URL是/ customer1 / fi-fi / somecontroller / someaction时,任何生成的URL都是这样的

<a asp-controller="othercontroller" asp-action="otheraction">Some action</a>

将使用客户和语言代码正确生成。

问题是,我应该如何生成网址,以便我可以指定客户和语言代码而无需进行字符串连接?我需要这个,例如在改变语言的链接中。

我试过了

<a asp-controller="somecontroller" asp-action="someaction" asp-route="default" asp-route-customer="customer2" asp-route-language="en-us">Some action in other language and other customer</a>

但是这表示我在定义asp-route时无法指定动作和控制器,如果我是远程asp-route则没有任何变化。

1 个答案:

答案 0 :(得分:0)

我通过使用@ Url.RouteUrl来实现这一点,例如

@Url.RouteUrl("default", new { customer = "someothercustomer", language = "someotherlanguage", controller = "somecontroller", action = "someaction" })