【问题标题】:JQuery date picker control always shows required though it is notJQuery 日期选择器控件始终显示为必需,尽管它​​不是
【发布时间】:2013-08-01 07:11:10
【问题描述】:

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

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,事实并非如此。我能够通过使用 Html.TextBox 而不是 TextBoxFor 来绕过这个问题。但是,在这种情况下,我需要使用 TextBoxFor。

【问题讨论】:

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


    【解决方案1】:

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

    DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多