ASP.NET MVC 属性路由和本地化

4

尝试在URI中设置属性路由和区域性的组合。

我想以以下方式设置路由:

www.domain.com/{culture}/{controller}/{action}... 和一些参数 和 www.domain.com/{controller}/{action}...(相同,但没有指定文化)

问题是我不知道如何以这种方式识别用户(浏览器)的默认文化。

据我所知,在使用属性路由时只有两个选项:

  • 可选参数 {culture?}
  • 默认值 {culture=en}

但这两个选项都不足以在未直接给出URI时获取用户的文化。

1个回答

0

如果URL中不包含区域参数,您可以使用Accept-Language HTTP标头的值。

它可以通过Request.UserLanguages[]属性访问,因此如果您的客户端是浏览器,您肯定可以通过以下方式检索客户端的区域设置:

if (HttpContext.Current != null && HttpContext.Current.Request.UserLanguages != null && HttpContext.Request.UserLanguages.Any())
{
    var culture = CultureInfo.GetCultureInfo(Request.UserLanguages[0]);   
}

关于此标题的详细信息,请查看W3C文档第14.4节

更新:

请参阅Rick Strahl的文章


我知道如何获取Request.UserLanguages[]。我的问题是关于如何使用属性路由将该文化放入URI中。 - intox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接