【问题标题】:How to implement language switcher by subdomains MVC4如何通过子域 MVC4 实现语言切换器
【发布时间】:2014-02-24 11:39:22
【问题描述】:

如何实现解决方案,其中语言切换器不会包含在会话变量或 URL 中的xyz.com/{language} 参数上(我现在有这种方法)。

只需en.XYZ.com/Account/Login 或例如de.XYZ.com/SomeController/SomeAction(子域切换语言变量 - 这对 SEO 更友好)

如何实现?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 routing


    【解决方案1】:

    您使用会话变量有什么原因吗?更常见的解决方案是在路由中包含语言代码,即 blah.com/en/info 或 blah.com/jp/info(英语和日语)

    如果您这样做,网站上的每个页面都可能包含指向每种语言的链接。如果您正在编写一个可公开访问的网站,这也可以让 Google 更轻松地为您的所有内容编制索引。

    这篇文章解释了如何在域中包含语言,即。 en.blah.com 或 jp.blah.com:http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

    更新:这是一个在 URL 路由中包含语言代码的简单示例。

    更改默认路由以包含语言参数:

    routes.MapRoute(
    "Default", 
    "{language}/{controller}/{action}/{id}", 
    new { language = "en", controller = "Home", action = "Index", id = "" }
    );
    Add links for each language to your masterpage:
    
    <li>@Html.ActionLink(
        "Spanish", 
        ViewContext.RouteData.Values["action"].ToString(), 
        new { language = "es" })</li>
    

    这些将呈现为返回您所在页面的链接 - 仅更改语言。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2017-09-05
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多