4

MVC 4Razor ビューを使用していますが、日付フィールドの編集ビューが組み込みの jQuery 日付ピッカーに適切にバインドされない理由を理解できません。

フィールドはDate、データベースおよびDateTimeドメイン モデルのデータ型です。時間は表示せず、日付のみを表示します。このフィールドは必須であり、書式設定が必要です。

私の見解は次のようになります:

<div class="editor-label">
    @Html.LabelFor(model => model.Appointment.EndDate)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Appointment.EndDate)
    @Html.ValidationMessageFor(model => model.Appointment.EndDate)
</div>

このフィールドのメタデータが

[Required(ErrorMessage = "End Date must be a valid date, like 05/13/2016.")]
[DataType(DataType.Date)]
[Display(Name = "End Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public object EndDate { get; set; }

次に、edit.cshtml のエディター出力は次のとおりです。

<input class="text-box single-line" data-val="true" data-val-date="The field End Date must be a date." data-val-required="End Date must be a valid date, like 05/13/2016." id="Appointment_EndDate" name="Appointment.EndDate" type="date" value="05/09/2013">

これはjQueryの日付ピッカーを描画しますが、値を設定しません。

メタデータから DataType 属性を削除し、他のすべてをそのままにしておくと、次のようになります。

[Required(ErrorMessage = "End Date must be a valid date, like 05/13/2016.")]
[Display(Name = "End Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public object EndDate { get; set; }

次に、私のエディター出力は次のとおりです。

<input class="text-box single-line valid" data-val="true" data-val-date="The field End Date must be a date." data-val-required="End Date must be a valid date, like 05/13/2016." id="Appointment_EndDate" name="Appointment.EndDate" **type="datetime"** value="05/09/2013">

これにより、値が適切に設定されたプレーン テキスト ボックス (datepicker なし) が描画されます。

日付ピッカーを使用したいのですが、正しい値を設定するにはどうすればよいですか?

4

1 に答える 1

0

次のコードを試してください。

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? EndDate { get; set; }

(私はnull可能な日時を使用しましたが、実際には必要ありません)

GUI では次のように使用します。

@Html.EditorFor(m => m.EndDate )

これはうまくいくはずです。

于 2013-06-04T12:29:12.123 に答える