在我的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则没有任何变化。
答案 0 :(得分:0)
我通过使用@ Url.RouteUrl来实现这一点,例如
@Url.RouteUrl("default", new { customer = "someothercustomer", language = "someotherlanguage", controller = "somecontroller", action = "someaction" })