改变MVC中的文化

时间:2010-03-03 12:03:43

标签: asp.net-mvc localization asp.net-mvc-routing

我在我的MVC应用程序中使用基于URL的本地化逻辑。 所以,默认路由是mysite / someControler,本地化路由是mysite / en-US / someControler。

“en-US”是具有默认值的“culture”参数的值。

我想知道什么是在文化之间切换的通用方法,并保留所有网址路由值和参数?

由于

1 个答案:

答案 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>

不太聪明,但是如果你正在处理很少的事情(你确定可以优化这两种方法),那么就能很好地完成工作。