Microsoft の指示に従って、MVC3 アプリケーションを MVC4 にアップグレードしています。私の日付モデルのプロパティのいくつかが異なってレンダリングされていることを除いて、すべてがかなりスムーズに進みました。たとえば、これらのプロパティの 1 つは、ビューモデルで次のように定義されます。
[Required(ErrorMessage = "Required")]
[DataType(DataType.Date)]
[RegularExpression(@"([1-9]|0[1-9]|1[012])...",
ErrorMessage = "Format is mm/dd/yyyy")]
[FormatHint("mm/dd/yyyy")]
[InputSize("small")]
public string Date { get; set; }
MVC4 にアップグレードする前に、これは@Html.EditorFor(m => m.Date)
、カスタム EditorTemplate -String.cshtml
テンプレート (文字列であるため!) を使用する呼び出しによってレンダリングされます。クライアント側でフィールド レイアウト、jQueryUI、および twitter Bootstrap を利用するように、html をフォーマットするカスタム データ注釈がいくつかあります。検証は目立たない jquery 検証を介して行われます。とにかく、これは以前にレンダリングされた方法です:
MVC4 を使用するようになったので、String.cshtml
エディター テンプレートはこのプロパティに対して呼び出されなくなりました。次のようにレンダリングされます (Chrome では HTML5 エディターを使用していると思います):
input
要素はほとんど同じように見えます - すべての jQuery 検証ビットがそこにあります - 唯一の違いは、属性type
がtype="date"
以前はどこにあったかtype="text"
です。
String.cshtml
このデータ型の EditorTemplateを引き続き使用したいと思います。の TemplateHint を提供するために ViewModel プロパティに付けることができるデータ注釈があるかもしれないと考えています@Html.EditorFor(...)
。そうでない場合は、MVC4 の書式設定をハイジャックするために書き込むことができるカスタム EditorTemplate を知りたいです (既に試しましたDateTime.cshtml
が、どちらも呼び出されていません)。どちらでもない場合は、以前のようにプロパティをレンダリングする方法についての提案を受け付けています。