Asp.net mvc 基于浏览器接受语言自动设置uiCulture
如何根据用户的浏览器自动设置ui的区域性? 关于这一点,我只找到了全球化的文化(“pt BR”)代码>但它将Asp.net mvc 基于浏览器接受语言自动设置uiCulture,asp.net-mvc,globalization,Asp.net Mvc,Globalization,如何根据用户的浏览器自动设置ui的区域性? 关于这一点,我只找到了全球化的文化(“pt BR”)但它将pt BR设置为默认值,我不希望将其设置为默认值!我只想在用户为pt BR时设置此选项! 我该怎么做?以及验证程序方法,如何为特定的区域性设置它们?在ASP.NET MVC中,web.config是正确的位置。第一个片段显示,有一个快速总结,例如,pt BR文化是如何强制的 <globalization enableClientBasedCulture="false"
pt BR
设置为默认值,我不希望将其设置为默认值!我只想在用户为pt BR时设置此选项!
我该怎么做?以及验证程序方法,如何为特定的区域性设置它们?在ASP.NET MVC中,
web.config
是正确的位置。第一个片段显示,有一个快速总结,例如,pt BR
文化是如何强制的
<globalization
enableClientBasedCulture="false"
uiCulture="pt-BR"
culture="pt-BR" />
Extended:用于jQuery
验证程序和数字输入的区域性设置
注意:我绝对不是jQuery
和全球化技术方面的专家。这是我如何调整验证器以正确处理任何数字输入的示例
razor视图部分(X()
是新HtmlString()的快捷方式
):
jQuery部件(最小值和最大值的自定义方法)
$.validator.addMethod(“min”),函数(值、元素、参数)
{
var num=value.replace(RegExp(“,“g”),”“)//删除空格
.replace(RegExp('\\'+defaultthousandseperator,“g”),“”)//千位分隔符
.replace(RegExp(“\\”+defaultdecimalseperator,“g”),“;//修复小数
返回此参数。可选(元素)| | num>=param;
});
$.validator.addMethod(“max”,函数(值、元素、参数)
{
var num=value.replace(RegExp(“,“g”),”“)//删除空格
.replace(RegExp('\\'+defaultthousandseperator,“g”),“”)//千
.replace(RegExp(“\\”+defaultdecimalseperator,“g”),“;//小数
返回此值。可选(元素)| | num您需要从网页(或母版页)写出脚本:
全球化。文化(“”);
就是这样。请注意,我使用了CurrentCulture
而不是CurrentUICulture
,因为这是您应该用于格式化的内容。如果您需要翻译(我不会这样做,因为这会影响本地化),您将需要原始的CurrentUICulture
,但更改此值不会影响jquery验证程序(验证保持不变),因此我需要使用Globalize.js更改区域性。好的,我不知道Globalize.js。要处理js内容,我使用动态生成的js变量,例如:var defaultCulture=”@(CultureInfo.CurrentCulture.Name)
;然后扩展JS组件,如$.datepicker.regional[defaultCulture | |'']
。但我的回答是解释如何允许使用客户端区域性,正如您所问的……可能有默认值,但如果提供,则会被客户端覆盖。是的,谢谢。但我也需要知道如何使用globalize和验证。我扩展了我的回答,并介绍了一些基本的操作方法。这就是C#part如何呈现表示num的字符串的方法BER基于CurrentCulture,而jQuery.validator仍然对其进行评估…只是一个线索
<globalization
enableClientBasedCulture="true"
uiCulture="auto"
culture="auto" />
<globalization
enableClientBasedCulture="true"
uiCulture="auto:pt-BR"
culture="auto:pt-BR" />
var defaultThousandSeprator = "@X(culture.NumberFormat.NumberGroupSeparator)";
var defaultDecimalSeprator = "@X(culture.NumberFormat.NumberDecimalSeparator)";
$.validator.addMethod("min", function (value, element, param)
{
var num = value.replace(RegExp(" ", "g"), "") // remove spaces
.replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousand separator
.replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // fix decimals
return this.optional(element) || num >= param;
});
$.validator.addMethod("max", function (value, element, param)
{
var num = value.replace(RegExp(" ", "g"), "") // remove spaces
.replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousands
.replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // decimals
return this.optional(element) || num <= param;
});
<script type="text/javascript">
Globalize.culture("<% = CultureInfo.CurrentCulture.ToString() %>");
</script>