Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何用子域MVC4实现语言切换器_C#_Asp.net_Asp.net Mvc 4_Routing - Fatal编程技术网

C# 如何用子域MVC4实现语言切换器

C# 如何用子域MVC4实现语言切换器,c#,asp.net,asp.net-mvc-4,routing,C#,Asp.net,Asp.net Mvc 4,Routing,我如何实现这个解决方案,其中语言切换器不会由会话变量或URL中的xyz.com/{language}参数组成(我现在有了这种方法) 只需en.XYZ.com/Account/Login或例如de.XYZ.com/SomeController/SomeAction(子域切换语言变量-这对SEO更友好) 如何实现它?使用session变量有什么原因吗?更常见的解决方案是在路由中包含语言代码,即blah.com/en/info或blah.com/jp/info(适用于英语和日语) 如果您这样做,网站上

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

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


如何实现它?

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

如果您这样做,网站上的每个页面都可能包含指向每种语言的链接。如果你正在写一个可公开访问的网站,这也会让谷歌更容易索引你的所有内容

本文介绍了如何在域中包括该语言,即en.blah.com或jp.blah.com:

更新:下面是一个在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>
routes.MapRoute(
“默认”,
“{language}/{controller}/{action}/{id}”,
新建{language=“en”,controller=“Home”,action=“Index”,id=”“}
);
将每种语言的链接添加到母版页:
  • @Html.ActionLink( “西班牙语”, ViewContext.RoutedData.Values[“action”].ToString(), 新的{language=“es”})
  • 这些将作为链接呈现回您所在的页面-仅在语言更改的情况下