Javascript 未输入日期-时间,但模型已按要求进行了日期-时间的客户端验证
我将MVC 5与以下模型一起使用:Javascript 未输入日期-时间,但模型已按要求进行了日期-时间的客户端验证,javascript,jquery,asp.net-mvc,validation,razor,Javascript,Jquery,Asp.net Mvc,Validation,Razor,我将MVC 5与以下模型一起使用: public class PassengerItem { /// <summary> /// Class constructor /// </summary> public PassengerItem() { DateOfBirth = new DateTime(1970, 1, 1); } [Required(AllowEmptyStrings = fa
public class PassengerItem
{
/// <summary>
/// Class constructor
/// </summary>
public PassengerItem()
{
DateOfBirth = new DateTime(1970, 1, 1);
}
[Required(AllowEmptyStrings = false)]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DateOfBirth { get; set; }
}
public class BookingProcessViewModel
{
/// <summary>
/// Class constructor
/// </summary>
public BookingProcessViewModel()
{
ErrorMessages = new OzCpResultErrors();
Passengers = new List<PassengerItem>();
//Populate with 4 passengers. We show/hide these in the view. Currently we only allow a max of 4 pax to be booked at a time
for (int i = 0; i < 4; i++)
{
Passengers.Add(new PassengerItem());
}
}
}
这将生成以下HTML:
<div class=" form-group"><label class="control-label" for="">Date Of Birth<span aria-required="true" class="required">*</span> </label><input class="form-control hasDatepicker" data-jqui-dpicker-changemonth="True" data-jqui-dpicker-changeyear="True" data-jqui-dpicker-constraininput="True" data-jqui-dpicker-dateformat="dd/mm/yy" data-jqui-dpicker-defaultdate="01/01/1970" data-jqui-dpicker-maxdate="21/09/2015" data-jqui-type="datepicker" id="Passengers_0__DateOfBirth" name="Passengers[0].DateOfBirth" value="01/01/1970" type="text"></div>
现在,如果我清除日期输入的内容并尝试提交表单,我希望它会失败,因为它是必填字段,不可为空。然而,验证通过了,没有问题
此外,如果输入的日期大于今天,则验证也将通过
因此,很明显,该领域的验证不起作用。我无法确定这是jQuery、不引人注目的验证还是两者都有问题
非常感谢任何指针。您显示的呈现html不包括客户端验证所需的任何
data val
属性。可能是因为客户端验证已禁用,或者控件不在表单元素HMMM中。。。好的。客户端验证没有被禁用,因为我有其他正在验证的控件(只是为了简洁起见没有包括在内),并且它位于表单元素中。我怀疑这是MVC剃须刀助手的组合。
<div class=" form-group"><label class="control-label" for="">Date Of Birth<span aria-required="true" class="required">*</span> </label><input class="form-control hasDatepicker" data-jqui-dpicker-changemonth="True" data-jqui-dpicker-changeyear="True" data-jqui-dpicker-constraininput="True" data-jqui-dpicker-dateformat="dd/mm/yy" data-jqui-dpicker-defaultdate="01/01/1970" data-jqui-dpicker-maxdate="21/09/2015" data-jqui-type="datepicker" id="Passengers_0__DateOfBirth" name="Passengers[0].DateOfBirth" value="01/01/1970" type="text"></div>
//Hook the submit functionality for the form
$(formJQuerySelector).submit(function(aArgs) {
aArgs.preventDefault();
//Validate the fields with MVC validation.
if ($(this).valid()) {
$(confirmDialogJquerySelector).dialog('open');
}
});