3

.NetMVC4アプリケーションのモデルにDateTimeフィールドがあります。カレンダーコントロールを使用するオプションをユーザーに提示しながら、編集ビューに日付値を表示したいと思います。

属性を追加すると[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)]、ユーザーに現在の値がテキストフィールドとして表示されます。 Foramat出力を表示する

追加する[DataType(DataType.Date)]と「mm/dd / yyyy」が表示され、現在の値が非表示になります。 DateFormat(DataType.Date)出力

下矢印を選択すると、優れたカレンダーウィジェットが提供されます。
カレンダーウィジェット

この機能を組み合わせて、ユーザーが現在選択されている日付とカレンダーウィジェットを表示できるようにする方法はありますか?

アップデート

これはブラウザの動作です。コントロールによって生成されたマークアップには、現在の日付値が含まれています。

 <input class="text-box single-line" data-val="true" data-val-date="The field Dining Date must be a date." data-val-required="The Dining Date field is required." id="DiningDate" name="DiningDate" type="date" value="2/15/2013">

IE9はウィジェットなしで日付を表示することでこのマークアップをレンダリングしますが、Chromeは日付を非表示にします。

4

1 に答える 1

6

IE9は、ウィジェットなしで日付を表示することにより、このマークアップをレンダリングします

IE9は日付入力をまったくサポートしていないため、このWebブラウザーのウィジェットを忘れることができます。IE10でさえそれをサポートしていません:-) following articleHTML5の日付入力をサポートするWebブラウザを確認してください。これをサポートしていない他のすべてのブラウザは、日時ピッカーウィジェットなしで標準のテキストボックスを表示するだけです。

Chromeは日付を非表示にします。

このデフォルト値を表示するには、日付入力フィールドHTML specificationの属性でを使用する必要があると述べています。valueRFC 3339 format

<input id="Date" name="Date" type="date" value="2013-02-17" />

が別の形式を使用している場合、valueこのデフォルト値は表示されません。

したがって、未定義の動作を取得したくない場合は、仕様を尊重するようにしてください。

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

そして、期待どおりの結果が得られます。

ここに画像の説明を入力してください

于 2013-02-17T14:39:01.030 に答える