首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 5-无法运行全球化

MVC 5-无法运行全球化
EN

Stack Overflow用户
提问于 2017-06-26 15:31:05
回答 1查看 1.1K关注 0票数 0

我想加入全球化,因为网站要求用户提供一个日期。我的德国用户想输入"31.12.1966“而不是"1966-12-31”。

因此,我将nuget包"jQuery.Validation.Globalize“和”jquery“添加到项目中。

现在我无法配置我的BundleConfig!从我的研究中我知道,我需要globalize.js和其他一些文件。所以我试着做一个bündle:

代码语言:javascript
复制
 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/")
           );

视图中的使用:

代码语言:javascript
复制
...
@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>
}            

但我发现了一个错误:

代码语言:javascript
复制
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

我翻译了这篇德文原文:

代码语言:javascript
复制
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.

我需要更多/其他文件吗?

我能做什么?有什么帮助吗?

辛塞利·彼得

EN

回答 1

Stack Overflow用户

发布于 2017-07-04 14:51:51

我就这样解决了:

在我看来,以下脚本块:

代码语言:javascript
复制
<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");
    });
    });

我的数据类有这样的分析:

代码语言:javascript
复制
...
[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-数据。示例:

代码语言:javascript
复制
 bower install cldr-dates-full

(请参阅包概述和安装指令1)

然后,我将所需的json文件(在这里您可以找到一个用于文件选择2的在线工具)从目录"bower_components“分别移到”bower_components\cldr\main\de“。

我将它们添加到项目中,并将其标记为“内容”、“无副本”。

因此,最终是可行的:)

如果我设法将js和json文件捆绑在一起,我将更新答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44763260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档