MVC4 DataType.Date EditorFor は Chrome では日付値を表示しませんが、Internet Explorer では問題なく表示されます 質問する

MVC4 DataType.Date EditorFor は Chrome では日付値を表示しませんが、Internet Explorer では問題なく表示されます 質問する

私はモデルでDataType.Date属性を使用し、ビューでEditorForを使用しています。これは問題なく動作しています。インターネットエクスプローラー8そしてインターネットエクスプローラー9、しかし、グーグルクローム日付ピッカーが表示されていますが、値が表示される代わりに、薄い灰色のテキストで「月/日/年」だけが表示されます。

Google Chrome で値が表示されないのはなぜですか?

モデル:

[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }

ビュー:

<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>

クロム

インターネットエクスプローラ

ベストアンサー1

ASP.NET MVC 4 でモデル プロパティを[DataType(DataType.Date)]既定のテンプレートで装飾すると、次の入力フィールドが生成されますtype="date"

<input class="text-box single-line" 
       data-val="true" 
       data-val-date="The field EstPurchaseDate must be a date."
       id="EstPurchaseDate" 
       name="EstPurchaseDate" 
       type="date" value="9/28/2012" />

Google Chrome などの HTML5 をサポートするブラウザは、この入力フィールドを日付ピッカーでレンダリングします。

日付を正しく表示するには、値を としてフォーマットする必要があります2012-09-28仕様:

価値:[RFC 3339] で定義されている有効な完全な日付。ただし、年コンポーネントは 0 より大きい数値を表す 4 桁以上の数字であるという追加の条件があります。

次の属性を使用してこの形式を強制できますDisplayFormat

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }

おすすめ記事