vid*_*oon 5 asp.net-mvc asp.net-mvc-2
我有一个支持本地化的网站。我希望能够在英语和法语之间切换。
假设用户当前位于URL:http : //www.mysite.com/ zh_ / Home
我想重定向到:http : //www.mysite.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)%>
Run Code Online (Sandbox Code Playgroud)
这将维护当前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}" });
Run Code Online (Sandbox Code Playgroud)
您可以使用控制器中的变量语言访问该语言
要生成链接:
<%= Html.ActionLink("French", ViewContext.RouteData.Values["action"], new { language = "fr" }) %>
Run Code Online (Sandbox Code Playgroud)
您可以使用此属性创建基类控制器:
public string Language { get { return this.Routedata["language"]; } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |