ASP.NET MVC 2に子どもの編集者がいますか?
-
04-10-2019 - |
質問
カスタムオブジェクト用のエディターテンプレートがあります。かなり基本的な - 文字列と日付がたくさんあるだけです:
<%:Html.LabelFor(model => model.AString)%>
<%:Html.TextBoxFor(model => model.AString)%>
<%:Html.LabelFor(model => model.ADate)%>
<%:Html.EditorFor(model => model.ADate)%>
<%:Html.LabelFor(model => model.AnotherDate)%>
<%:String.Format("{0:d}", Model.AnotherDate)%>
これは、共有/editortemplatesフォルダーに保存されます。また、同じ場所にDateTime.Ascxエディターテンプレートがあり、すべてのDateTimeフィールドをオーバーライドしています。
上記のコードでわかるように、日付フィールドの1つは EditorFor
日付フィールドの場合、もう1つはそうではありません。ただし、どちらも同じレンダリングを行うため、DateTimeエディターがアクセスされていないと信じるようになります。私が間違っていることはありますか?これができるはずのようです。
DateTimeエディターを直接ビューで使用しましたが、正常に動作します。
助けや洞察をありがとう。
解決 2
私は問題を理解しました:
モデルのデータアノテーション用にセットアップされた部分的なメタデータクラスがあります(エンティティフレームワークを使用しています)。私の部分的な日付ビューは?datetime(datetime.ascx)のためです
すべての日付に設定されたすべての日付のデータ型属性がありました [DataType(DataType.Date)]
それ以外の [DataType(DataType.DateTime)]
.
その属性を変更すると、それをすべて修正しました。
他のヒント
MVC 2とMVC 3の下で、MVC 3の下であなたのシナリオを試してみました。
ちょうど私はあなたが持っていることを正しく理解しています EditorTemplates
あなたの共有にはあなたが含まれています ComplexModel.ascx
編集者とあなたの中 ComplexModel.ascx
あなたが呼ぶ Html.EditorFor(m => m.ADate)
.
これに関してMVC 2の更新についてはわかりませんが、MVC 3は間違いなく機能します。