数値入力用のテンプレートを作成しました。作成した場合
@Html.EditorFor(model => model.SomeValue, "Number")
正常に機能し、テンプレートが使用されます。
しかし、それは機能しません:
@Html.EditorFor(model => model.SomeValue)
なぜ基本型のエディターテンプレートの名前を指定する必要があるのですか?
エディタテンプレートは慣例に従って機能します。テンプレートの名前は、タイプの名前と一致する必要があります。たとえば、SomeValue
がint
型の場合、~/Views/Shared/EditorTemplates/Int32.cshtml
で使用するカスタムエディターテンプレートを作成できます。この場合、@Html.EditorFor(model => model.SomeValue)
を記述するときに、すべての整数型がこのカスタムテンプレートを使用します。
整数型のすべてのテンプレートをオーバーライドしたくない場合は、特定の名前付きテンプレート~/Views/Shared/EditorTemplates/Number.cshtml
を記述し、このテンプレート名をEditorFor
ヘルパーの2番目の引数として指定することで、一部のプロパティにのみ使用できます:@Html.EditorFor(model => model.SomeValue, "Number")
またはビューモデルプロパティを[UIHint]
属性で修飾することにより:
[UIHint("Number")]
public int SomeValue { get; set; }
そして、単に@Html.EditorFor(model => model.SomeValue)
を使用すると、Number.cshtml
カスタムテンプレートがレンダリングされます。
また、ASP.NET MVCのデフォルトテンプレートについてBrad Wilsonの blog post
を読むことをお勧めします。
エディターテンプレートでは、同じタイプExampleが必要です。
model.SomeValueはloremIpsumObjectのタイプです
EditorTemplateでは次のとおりです。
@model YourNamespaceWhereIsYourClass.loremIpsumObject
...And your code in your editorTemplate....
例を見つけることができます here 日時
それはあなたを助けますか?