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

标签 c# asp.net asp.net-mvc

尝试在URI中设置结合文化的属性路由。

我想以这种方式设置我的路线:

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

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

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

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

但如果没有直接在 URI 中给出,两者都不足以获取用户的文化

最佳答案

如果 URL 不包含文化参数,您可以使用 Accept-Language HTTP header 的值。

它可以通过 Request.UserLanguages[] 属性访问,所以如果您的客户端是浏览器,您肯定能够通过类似以下方式检索客户端的文化:

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

有关此 header 的详细信息,请查看 W3C document section 14.4

更新:

看看这个article作者:里克·斯特拉尔。

关于c# - ASP.NET MVC 属性路由和本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30013249/

相关文章:

c# - Powershell 中的 DataTable.Rows.Find(MultiplePrimaryKey)

c# - Switch + Enum = 不是所有的代码路径都有返回值

c# - 类型转换错误 : Inserting data into Custom MembershipUser

Asp.net 元名称 ="description"带撇号

c# - MVC : Pagination hindering the way a list is sorted

c# - 在四核上使用线程可将代码速度提高 65%?

java - 在 Java 和 C# 之间编码和解码 Base64 字符串

c# - 使用自定义 FileResult 输出在 NPOI 库中创建的工作簿

c# - 一种为 Web 请求生成 QueryString 参数的简洁方法

jquery - 对话框 Jquery 不工作