我对Asp.net MVC4中的日期验证有疑问。 我正在使用数据注释进行日期验证,如下所示
[DataType(DataType.Date)]
[AllowHtml]
[DisplayFormat(HtmlEncode = false, ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[Display(Name = "Date Of Birth")]
public Nullable<System.DateTime> DateOfBirth { get; set; }
接下来,在Html页面中,我在MVC Html表单中使用了以下内容
@Html.TextBoxFor(model => model.UserSettings.DateOfBirth,
String.Format("{0:dd/MM/yyyy}",
model.UserSettings.DateOfBirth),
new { id = "DoB", @class = "brth-ipt" })
最后,我正在使用Jquery Date选择器,如下所示
$(function () {
$("#DoB").datepicker("destroy");
$("#DoB").datepicker({
showOn: "both",
beforeShow: customRange,
dateFormat: "dd/mm/yy", //"mm-dd-yy",
firstDay: 1,
changeFirstDay: false,
changeMonth: true,
changeYear: true,
yearRange: "-150:+0"
});
});
我的问题是,当我从datepicker中选择一个日期时,它会显示为mm / dd / yyyy格式,并且工作正常。
但是当我再次加载页面来编辑表单时,它以mm-dd-yyyy格式显示。现在,当我保存表单而没有查找上一个日期(mm-dd-yyyy格式)时,我无法保存表单,因为数据注释vaidation会给我一个错误。 “日期不是有效格式”。
我无法解决这个问题。
答案 0 :(得分:0)
试试这个:
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
[Display(Name = "Date Of Birth:")]
public DateTime? DateOfBirth { get; set; }
据我所知,你甚至不需要使用Jquery Date picker
。该框架附带内置帮助程序来选择日期。
在您的视图中
<div class="editor-label">
@Html.LabelFor(model => model.DateOfBirth )
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DateOfBirth )
@Html.ValidationMessageFor(model => model.DateOfBirth )
</div>
这是在Google Chrome中测试的
答案 1 :(得分:0)
Html.TextBoxFox()
未考虑[DisplayFormat]
。要利用此属性并实现目标,您可以使用
Html.EditorFor(x => x.UserSettings.DateOfBirth, new {id = "DoB", @class = "brth-ipt"})
答案 2 :(得分:0)
我碰到同样的事情,终于找到了解决问题的方法。 我在ViewModel中做了这个数据注释
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
,此代码在我的日期选择器
<div class="input-group date" id="mydatepicker" data-date-format="MM-dd-yyyy">
<input asp-for="MyDate" type="text" class="form-control" />
<span class="input-group-addon">
<i class="glyphicon glyphicon-calendar"></i>
</span>
</div>
然后我将这段代码放在jquery中以通过ajax发送
$('#calender-container .input-group.date').datepicker({
todayBtn: true,
calendarWeeks: true,
todayHighlight: true,
autoclose: true,
}).datepicker('update', new Date());
从“ mm-dd-yyyy”更改数据日期格式时很有趣,
这给了我无效的模型状态,到“ MM-dd-yyyy”,一切都变为有效。