我有一个属性ExpiredDate在MVC定义
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? ExpirationDate { get; set; }
我想,如果验证页面上的日期是格式不正确。 我使用日期的格式是MM/dd/yyyy
。
我有一个属性ExpiredDate在MVC定义
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? ExpirationDate { get; set; }
我想,如果验证页面上的日期是格式不正确。 我使用日期的格式是MM/dd/yyyy
。
您应该使用的DataType
与属性DataType.Date
。 这两者都是在System.ComponentModel.DataAnnotations
命名空间,可以这样使用:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? ExpirationDate { get; set; }
这个答案还包括一些更多的属性。
更新 :要启用ASP.NET MVC4客户端验证,你需要这样做:
在jquery.validation插件添加到页脚
<%: Scripts.Render("~/Scripts/jquery.validate.min.js") %> <%: Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") %>
该加入的web.config
<appSettings> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
使用时,使用该CSS @Html.ValidationMessageFor()
使其通过JavaScript验证最初是隐藏和显示
/* styles for validation helpers */ .field-validation-error { color: #e80c20; font-weight: bold; } .field-validation-valid { display: none; } input.input-validation-error { border: 1px solid #e80c20; } input[type="checkbox"].input-validation-error { border: 0 none; } .validation-summary-errors { color: #e80c20; font-weight: bold; font-size: 1.1em; } .validation-summary-valid { display: none; }
自定义验证日期格式必须手动解决。
客户端验证问题可以因为在jquery.validate.unobtrusive.min.js 不以任何方式接受日期/日期时间格式 MVC的bug(即使在MVC 5)的发生。 它不是由日期选择器,也不浏览器造成的。 不幸的是,你必须手动解决它。
我终于工作液:
你必须包括前:
@Scripts.Render("~/Scripts/jquery-3.1.1.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/moment.js")
您可以安装使用moment.js:
Install-Package Moment.js
然后你就可以最后加上修复的日期格式的分析:
$(function () {
$.validator.methods.date = function (value, element) {
return this.optional(element) || moment(value, "DD.MM.YYYY", true).isValid();
}
});
您可以使用验证,如:
[Required]
[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime? ExpirationDate { get; set; }
我认为它会工作