Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Asp.net mvc 基于浏览器接受语言自动设置uiCulture_Asp.net Mvc_Globalization - Fatal编程技术网

Asp.net mvc 基于浏览器接受语言自动设置uiCulture

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"

如何根据用户的浏览器自动设置ui的区域性? 关于这一点,我只找到了全球化的文化(“pt BR”)但它将
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>