私はモデルで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; }