0

以下に示すように、DateTime 型のモデルの生年月日プロパティに接続された jQuery 日付ピッカー コントロールがある ASP.NET MVC4 (Razor ビュー)/JQuery アプリケーションに取り組んでいます。

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

Jクエリコード:

$(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; }

モデル定義に示されているように、DOB プロパティを Required 属性で装飾していません。問題は、送信ボタンを押すと、バリデーターが常に不平を言うことですがDOB is required、そうではありません。TextBoxFor の代わりに Html.TextBox を使用することで、この問題を回避できました。ただし、このシナリオでは TextBoxFor を使用する必要があります。

4

1 に答える 1

3

DateTimeは値型で、整数などと同じです。したがって、MVC の検証モデルでは、デフォルトで必須としてマークされます。2 つのオプションがあります。最初のオプション: これを Global.asax ファイルの Application_Start() に入れます。

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

2 番目のオプションでは、null 許容型を使用して宣言できます。

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

最初のオプションはクライアント側の検証を扱いますが、サーバー側の場合、モデルの状態にエラーがあると言います。2 番目のオプションは、クライアントとサーバーの両方で機能します。

于 2013-08-01T07:44:36.393 に答える