JQuery日期选择器控件总是显示所需但不是

时间:2013-08-01 07:11:10

标签: jquery asp.net-mvc asp.net-mvc-3 razor

我正在开发一个ASP.NET MVC4(Razor视图)/ JQuery应用程序,其中我有一个jQuery datepicker控件,连接到 出生日期 属性具有DateTime类型的模型,如下所述:

Html.TextBoxFor(m=>m.DOB, new { @class = "dp", id = "dp1",value="" })

Jquery代码:

$(function() {
        $("#dp1").datepicker({
            yearRange: "-70:+0", 
            duration: '',
            changeMonth: true,
            changeYear:true,
            showTime: false,
            constrainInput: true,
            dateFormat: 'dd-mm-yy'
         });
    });

型号:

   [Display(Name = "Date Of Birth")]       
        public DateTime DOB { get; set; }

如模型定义所示,我没有使用Required属性修饰DOB属性。问题是,当我点击“提交”按钮时,验证程序始终会抱怨DOB is required,而不是{{1}}。我能够通过使用Html.TextBox而不是TextBoxFor来绕过这个问题。但是,我需要在这种情况下使用TextBoxFor。

1 个答案:

答案 0 :(得分:3)

DateTime 是值类型,例如,整数。因此,默认情况下,MVC的验证模型将根据需要进行标记。你有两个选择。第一个选项:将它放在Global.asax文件的Application_Start()中:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

第二个选项,您可以使用可空类型声明它:

[Display(Name = "Date Of Birth")]       
public DateTime? DOB { get; set; }

第一个选项将处理客户端验证,但对于服务器端,它会说,模型状态有错误。第二个选项对客户端和服务器都有效。