我在我的MVC应用程序中使用基于URL的本地化逻辑。 所以,默认路由是mysite / someControler,本地化路由是mysite / en-US / someControler。
“en-US”是具有默认值的“culture”参数的值。
我想知道什么是在文化之间切换的通用方法,并保留所有网址路由值和参数?
由于
答案 0 :(得分:0)
我做的很简单:
在我的基本控制器(所有其他控制器继承它)中,我设置了以下ViewData位:
If Request.Path.Contains("/en/") Then
ViewData("PathEs") = Request.Path.Replace("/en/", "/es/")
ViewData("PathPt") = Request.Path.Replace("/en/", "/pt/")
ElseIf Request.Path.Contains("/pt/") Then
ViewData("PathEn") = Request.Path.Replace("/pt/", "/en/")
ViewData("PathEs") = Request.Path.Replace("/pt/", "/es/")
Else
ViewData("PathEn") = Request.Path.Replace("/es/", "/en/")
ViewData("PathPt") = Request.Path.Replace("/es/", "/pt/")
End If
然后在母版页
<div id="langbar">
<% if not string.isnullorempty(ViewData("PathEs")) then %>
<a href="<%= ViewData("PathEs") %>">Español</a>
<% end if %>
<% if not string.isnullorempty(ViewData("PathEn")) then %>
<a href="<%= ViewData("PathEn") %>">English</a>
<% end if %>
<% if not string.isnullorempty(ViewData("PathPt")) then %>
<a href="<%= ViewData("PathPt") %>">Portugues</a>
<% end if %>
</div>
不太聪明,但是如果你正在处理很少的事情(你确定可以优化这两种方法),那么就能很好地完成工作。