尝试在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/