Javascript 日期格式客户端验证-MVC

Javascript 日期格式客户端验证-MVC,javascript,jquery,asp.net-mvc,validation,date,Javascript,Jquery,Asp.net Mvc,Validation,Date,所以,我是mvc、.net等的新手,我遇到了日期格式的常见问题。我从在模型上使用数据注释开始 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] [DataType(DataType.Date)] [Display(Name = "Release Date")] public DateTime ReleaseDate { get; set; } 我的

所以,我是mvc、.net等的新手,我遇到了日期格式的常见问题。我从在模型上使用数据注释开始

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    [DataType(DataType.Date)]
    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }
我的Create.cshtml如下所示:

    <div class="form-group">
        @Html.LabelFor(model => model.ReleaseDate, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.ReleaseDate, new { htmlAttributes = new { @class = "form-control", placeholder="dd/MM/yyyy" } })
            @Html.ValidationMessageFor(model => model.ReleaseDate, "", new { @class = "text-danger" })
        </div>
    </div>

@LabelFor(model=>model.ReleaseDate,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.ReleaseDate,new{htmlAttributes=new{@class=“form control”,placeholder=“dd/MM/yyyyy”})
@Html.ValidationMessageFor(model=>model.ReleaseDate,“,new{@class=“text danger”})
我试图创建一个对象,当我将日期设置为dd/MM/yyyy格式时,我从jquery验证中得到了以下错误消息:

“发布日期”字段必须是日期

当我尝试使用MM/dd/yyyy格式的日期,并单击“创建”按钮时,我从服务器验证程序收到了以下消息:

值“5/28/2013”对于发布日期无效

因此,无论使用哪种格式,都与其中一个验证器存在冲突。 经过大量的研究,我唯一能让它工作的方法就是用一个自定义脚本覆盖jquery验证(我在这里找到了两个)。我最终使用了John Reilly的,它基于jQuery项目和的。 按照指示进行操作,一切正常。所有对象都已创建,格式之间没有冲突

我的修改是:

网络配置:

  <system.web>
<globalization culture="en-GB" uiCulture="en-GB" />

_Layout.cshtml:

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/jquery.validate.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/globalize.js"></script>
<script src="~/Scripts/globalize/number.js"></script>
<script src="~/Scripts/globalize/date.js"></script>

<script src="~/Scripts/jquery.validate.globalize.js"></script>

(如果我继续使用该解决方案,我会将它们打包。)

唯一的问题是客户端验证已经消失。不仅仅是日期验证,还有每个字段的验证。例如,如果我有一个必需的字符串字段,并且没有在其中放入任何内容,我就不会得到js错误消息,而我过去常常得到这个字段是必需的。或者,如果我在日期字段中输入“asdasdasd”,我不会得到任何js错误。只有在单击服务器验证程序中的“创建”后,我才会收到错误

那么,关于如何恢复客户端验证有什么想法吗

谢谢


PS:我对js的了解非常基础。

不要尝试将客户端日期格式与服务器端日期格式同步。如果您希望在客户端使用某种格式,那么可以指示JQuery的日期选择器使用该格式。但不要期望服务器也使用这种确切的格式


请参阅我的答案,其中我详细解释了MVC如何处理日期。

感谢您的回复。我得到了你在另一篇文章中使用的关于不同国家的例子,但我不明白这如何适用于我的情况。现在,客户端/服务器格式已同步。服务器请求dd/MM/yyyy,客户端也请求dd/MM/yyyy。我的问题是,现在客户端不再像以前那样提供任何错误消息。我的全部观点是,您的问题源于您正在尝试同步它们,这不是一个好的解决方案。如果删除了为同步而编写的所有JQuery代码,那么问题将不再存在。整个想法是不同步它们。是的,但这不是我需要的。我需要两者都使用本地格式。