我想加入全球化,因为网站要求用户提供一个日期。我的德国用户想输入"31.12.1966“而不是"1966-12-31”。
因此,我将nuget包"jQuery.Validation.Globalize“和”jquery“添加到项目中。
现在我无法配置我的BundleConfig!从我的研究中我知道,我需要globalize.js和其他一些文件。所以我试着做一个bündle:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
bundles.Add(new ScriptBundle("~/bundles/global").Include(
"~/Scripts/globalize.js",
"~/Scripts/cldr.js").IncludeDirectory("~/Scripts/cldr/",
"~/Scripts/globalize/")
);视图中的使用:
...
@section Scripts {
@Scripts.Render("~/bundles/global")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/unobtrusiveajax")
<script type="text/javascript">
$(function () {
$.validator.methods.date = function (value, element) {
Globalize.culture("de-DE");
// you can alternatively pass the culture to parseDate instead of
// setting the culture above, like so:
// parseDate(value, null, "en-AU")
return this.optional(element) || Globalize.parseDate(value) !== null;
}
});
</script>
} 但我发现了一个错误:
Error at line 9, column 5 in http://localhost:58289/Scripts/jquery.validate.globalize.js
0x800a138f - runtimeerror in JavaScript:
The property "methods" of a undefindes or null-pointer can not bei called我翻译了这篇德文原文:
Ausnahmefehler in Zeile 9, Spalte 5 in http://localhost:58289/Scripts/jquery.validate.globalize.js
0x800a138f - Laufzeitfehler in JavaScript:
Die Eigenschaft "methods" eines undefinierten oder Nullverweises kann nicht abgerufen werden.我需要更多/其他文件吗?
我能做什么?有什么帮助吗?
辛塞利·彼得
发布于 2017-07-04 14:51:51
我就这样解决了:
在我看来,以下脚本块:
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/cldr.js"></script>
<script src="~/Scripts/cldr/event.js"></script>
<script src="~/Scripts/cldr/supplemental.js"></script>
<script src="~/Scripts/cldr/unresolved.js"></script>
<script src="~/Scripts/globalize.js"></script>
<script src="~/Scripts/globalize/currency.js"></script>
<script src="~/Scripts/globalize/number.js"></script>
<script src="~/Scripts/globalize/date.js"></script>
<script src="~/Scripts/globalize/plural.js"></script>
<script src="~/Scripts/globalize/relative-time.js"></script>
<script src="~/Scripts/globalize/unit.js"></script>
<script src="~/Scripts/jquery.validate.globalize.js"></script>
<script>
$(document).ready(function () {
// Use $.getJSON instead of $.get if your server is not configured to return the
// right MIME type for .json files.
$.when(
$.get("/Scripts/cldr/main/de/ca-gregorian.json"),
$.get("/Scripts/cldr/main/de/numbers.json"),
$.get("/Scripts/cldr/supplemental/likelySubtags.json"),
$.get("/Scripts/cldr/supplemental/timeData.json"),
$.get("/Scripts/cldr/supplemental/weekData.json")
).then(function () {
// Normalize $.get results, we only need the JSON, not the request statuses.
return [].slice.apply(arguments, [0]).map(function (result) {
return result[0];
});
}).then(Globalize.load)
.then(function () {
Globalize.locale("de-DE");
});
});我的数据类有这样的分析:
...
[Required]
[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime Geburtsdatum { get; set; }
...而且-非常重要!!-你必须拿到数据文件!这是因为clrd-数据是,而不是NuGet包"jQuery.Validation.Globalize“/”jquery“中的部分。(是的,在项目页面上有提到-但我没看到.-()
我安装了Bower (每个NuGet),然后通过Bower安装了Cldr-数据。示例:
bower install cldr-dates-full(请参阅包概述和安装指令1)
然后,我将所需的json文件(在这里您可以找到一个用于文件选择2的在线工具)从目录"bower_components“分别移到”bower_components\cldr\main\de“。
我将它们添加到项目中,并将其标记为“内容”、“无副本”。
因此,最终是可行的:)
如果我设法将js和json文件捆绑在一起,我将更新答案。
https://stackoverflow.com/questions/44763260
复制相似问题