我想在MVC5中使用MVC unobstrusive验证jQuery全球化插件(与包jquery-validate-globalize一起使用)。为了学习目的,我开始了一个演示项目,按照here,但它无法运行全球化(它在默认的微软unobstrusive验证)。该模型是非常简单的:使用MVC 5 jQuery全球化5
public class GlobalizeModel
{
[Range(10.5D, 20.3D)]
public decimal Double { get; set; }
[Required]
public DateTime? DateTime { get; set; }
}
我尝试启动Globalize的截至_layout页面底部如下(视图是最小的有2只输入):(我得到必要的文件列表从https://johnnyreilly.github.io/globalize-so-what-cha-want/)
<script src="~/Scripts/bootstrap.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<!--cldr scripts-->
<script src="~/Scripts/cldr.js"></script>
<script src="~/Scripts/cldr/event.js"></script>
<script src="~/Scripts/cldr/supplemental.js"></script>
<!--globalize scripts-->
<script src="~/Scripts/globalize.js"></script>
<script src="~/Scripts/globalize/number.js"></script>
<script src="~/Scripts/globalize/date.js"></script>
<!--jquery globalize-->
<script src="~/Scripts/jquery.validate.globalize.js"></script>
<script>
$.when(
$.getJSON("/Scripts/cldr/supplemental/likelySubtags.json"),
$.getJSON("/Scripts/cldr/main/en/numbers.json"),
$.getJSON("/Scripts/cldr/supplemental/numberingSystems.json"),
$.getJSON("/Scripts/cldr/main/en/ca-gregorian.json"),
$.getJSON("/Scripts/cldr/main/en/timeZoneNames.json"),
$.getJSON("/Scripts/cldr/supplemental/timeData.json"),
$.getJSON("/Scripts/cldr/supplemental/weekData.json"),
$.getJSON("/Scripts/cldr/main/tr/numbers.json"),
$.getJSON("/Scripts/cldr/main/tr/ca-gregorian.json"),
$.getJSON("/Scripts/cldr/main/tr/timeZoneNames.json"),
console.log("JSONs loaded")
).then(function() {
console.log("start slicing");
return [].slice.apply(arguments, [0]).map(function (result) {
console.log("slicing done");
return result[0];
});
}).then(Globalize.load).then(function() {
Globalize.locale("en");
console.log("Locale set to en");
}).then(console.log("LOADED EVERYTHING"));
</script>
但是当我运行的页面,我只看到控制台日志JSOns loaded
和LOADED EVERYTHING
。此外,当我尝试一个客户端验证通过在数字文本框(当然,当焦点丢失)输入任何内容,我在控制台中出现以下错误:
Uncaught Error: E_DEFAULT_LOCALE_NOT_DEFINED: Default locale has not been defined.
这篇文章here是相似的,我试图检查那里列出的东西。我认为我的JSON对象没有被抓取,但我不是很好的JS,所以我不确定。我加的下列项目的web.config,看看这是与文件服务相关的东西,有没有效果:
<system.webServer>
<staticContent>
<remove fileExtension=".json"/>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
的区域性设置为自动在web.config中如下:
<system.web>
<globalization culture="auto" uiCulture="auto" />
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
你可以看到这里Scripts
文件夹结构:
那么,有什么问题在这里?我怎样才能使这件事情工作?
你有没有发现发生了什么?我认为console.log(“JSONs loaded”)干扰了切片功能。 – Francisco
否;我无法解决它,所以我决定不使用'globalize'。在实际的项目中,我禁用了客户端验证,并依赖于文化敏感视图(例如包含十进制输入的视图)中的服务器验证。这个决定背后的原因是我花了太多时间在这方面无济于事,还有很多事情要做。也许我会在未来希望重新审视这个问题,希望全球化技术在此同时发展。附:如果没有'console.log(“JSONs loaded”)'',问题依然存在。 – mcy