【发布时间】:2018-11-05 14:59:49
【问题描述】:
我在 Route 中有几个 url 模式如下:
{lang}/package/{packageID}
{lang}/package/{packageID}/Edit/{partNumber}
...
layout.cshtml 中有一个页脚,页脚提供了不同的文化链接供用户更改网站的语言。当用户点击链接时,我希望它可以改变语言并停留在当前页面,所以我用 Razor 将链接渲染成这样:
@Html.ActionLink("English", ViewContext.RouteData.Values["Action"], ViewContext.RouteData.Values["Controller"], new { lang = "en-us"}, null)
@Html.ActionLink("Traditional Chinese", ViewContext.RouteData.Values["Action"], ViewContext.RouteData.Values["Controller"], new { lang = "zh-tw"}, null)
@Html.ActionLink("Japanese", ViewContext.RouteData.Values["Action"], ViewContext.RouteData.Values["Controller"], new { lang = "ja-jp"}, null)
...
但是有一个问题是我需要将上面提到的其他参数传递给页面,以保持用户停留在当前页面。
在这种情况下我该如何实现?
谢谢!
【问题讨论】:
-
ASP.NET MVC 将 automatically reuse 从当前请求路由段,如果它们发生在您明确提供值的段之前。如果您可以将您的
{lang}分段设置为路线中的最后一个分段,那么您想要的就会自动发生。 -
@GSerg Thnaks 供您发表评论,但这似乎不是一个好方法,它实际上可以在这种情况下工作。然而,这将是对 url 模式的限制,每个模式都需要将 {lang} 放在末尾,并且还要对用户发出请求的顺序做出假设。但这是一个提示,如果我仍然找不到其他解决方案,我会尝试一下。谢谢!
标签: c# asp.net-mvc routes