C# jQuery验证dd/mm/yyyy格式的日期

C# jQuery验证dd/mm/yyyy格式的日期,c#,jquery,asp.net,asp.net-mvc,date,C#,Jquery,Asp.net,Asp.net Mvc,Date,我正在从事一个ASP.NETMVC5项目。我在视图中有两个文本框,如下所示 @Html.TextBox("earliestDate", Model.Checklists.EarliestDate) @Html.TextBox("latestDate", Model.Checklists.LatestDate) $.validator.methods.date = function (value, element) { return this.optional(element) ||

我正在从事一个ASP.NETMVC5项目。我在视图中有两个文本框,如下所示

@Html.TextBox("earliestDate", Model.Checklists.EarliestDate)
@Html.TextBox("latestDate", Model.Checklists.LatestDate)
$.validator.methods.date = function (value, element) {
    return this.optional(element) ||
        Globalize.parseDate(value) ||
        Globalize.parseDate(value, "dd-MM-yyyy") || // new code
        Globalize.parseDate(value, "yyyy-MM-dd");
}
我正在输入日期“2014年3月1日”(2014年3月1日)和“2014年3月31日”(2014年3月31日)。当我在控制器中放置断点时,我可以看到控制器中earliestDate的值为“03/01/2014”(我输入的日期和月份已交换),而latestDate为空。如果我以yyyy-MM-dd格式输入日期,代码将按需要工作

我听从了文章中的建议

我已经安装了“globalize.js”,并将文章中的代码添加到我的视图中。没有改变,我仍然得到了上面描述的结果。所以我试着修改代码以明确地指定所需的区域性,就像这样,旧代码被注释掉了,我的新代码在它下面

@*<script src="~/Scripts/globalize/cultures/globalize.culture.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>*@
<script src="~/Scripts/globalize/cultures/globalize.culture.en-IE.js"></script>
全球化。文化(“en-IE”)

这仍然没有任何区别。所以我尝试显式地将所需的格式添加到
validator.methods.date
函数中,就像这样

@Html.TextBox("earliestDate", Model.Checklists.EarliestDate)
@Html.TextBox("latestDate", Model.Checklists.LatestDate)
$.validator.methods.date = function (value, element) {
    return this.optional(element) ||
        Globalize.parseDate(value) ||
        Globalize.parseDate(value, "dd-MM-yyyy") || // new code
        Globalize.parseDate(value, "yyyy-MM-dd");
}
还是没有区别。我错过了什么

以下是视图中完整的脚本部分,包括上述修改,以供参考

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script src="~/Scripts/globalize/globalize.js"></script>
    @*<script src="~/Scripts/globalize/cultures/globalize.culture.@(System.Threading.Thread.CurrentThread.CurrentCulture.Name).js"></script>*@
    <script src="~/Scripts/globalize/cultures/globalize.culture.en-IE.js"></script>
    <script>
    $.validator.methods.number = function (value, element) {
        return this.optional(element) ||
            !isNaN(Globalize.parseFloat(value));
    }
    $(document).ready(function () {
        //Globalize.culture('@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)');
        Globalize.culture('en-IE');
    });
    </script>
    <script>
        jQuery.extend(jQuery.validator.methods, {
            range: function (value, element, param) {
                //Use the Globalization plugin to parse the value
                var val = Globalize.parseFloat(value);
                return this.optional(element) || (
                    val >= param[0] && val <= param[1]);
            }
        });
        $.validator.methods.date = function (value, element) {
            return this.optional(element) ||
                Globalize.parseDate(value) ||
                Globalize.parseDate(value, "dd/MM/yyyy") || // new code
                Globalize.parseDate(value, "yyyy-MM-dd");
        }
    </script>
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
@**@
$.validator.methods.number=函数(值,元素){
返回此值。可选(元素)||
!isNaN(Globalize.parseFloat(value));
}
$(文档).ready(函数(){
//Globalize.culture('@(System.Threading.Thread.CurrentThread.CurrentCulture.Name)');
全球化。文化(“en-IE”);
});
extend(jQuery.validator.methods{
范围:函数(值、元素、参数){
//使用全球化插件解析值
var val=Globalize.parseFloat(值);
返回此。可选(元素)||(

val>=param[0]&&val您的jQueryval包中有什么

我也会遇到同样的问题,通过添加脚本
~/Scripts/globalize/globalize.js

此脚本解决了日期问题,但添加了一个新的数字验证问题。
如果没有这个脚本,日期验证是错误的,数字验证是正确的…

谢谢你的帮助,但是如果你仔细看一下我的问题和参考的文章,你会发现我已经尝试过了。你也可以在这里找到同样的问题的答案。