MVC - 更改链接中 URL 的一部分

2023-12-13

我有一个支持本地化的网站。我希望能够在英语和法语之间切换。

假设用户当前位于以下 URL:http://www.example.com/**en**/Home

我想重定向到:http://www.example.com/**fr**/Home

如果用户单击“法语”链接,如何将 URL 部分更改为“fr”,但不更改 URL 的“主页”部分(基本上我想保留用户的当前位置)

希望我的问题有意义!我可能错过了一些非常基本的东西?

编辑:有点找到解决方案。

<%= Html.ActionLink("Français", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { culture = "fr" }, null)%>
<%= Html.ActionLink("English", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { culture = "en" }, null)%>

这会维护当前 URL 的操作/控制器。也许有更清洁的解决方案?


在你的 Global.asax 中

 routes.MapRoute(
   name: "LocalizedRoute",
   url: "{language}/{controller}/{action}/{id}",
   defaults:
     new
     {
       language= "fr",
       controller = "Home",
       action = "Index",
       id = UrlParameter.Optional 
     },
   constraints: new { language= @"[a-z]{2}" });

您可以使用控制器中的变量语言访问该语言

要生成链接:

<%= Html.ActionLink("French", ViewContext.RouteData.Values["action"], new { language = "fr" }) %>

你可以做一个基类控制器具有此属性:

public string Language { get { return this.Routedata["language"]; } }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC - 更改链接中 URL 的一部分 的相关文章

随机推荐