web-dev-qa-db-ja.com

基本型のASP.NET MVC 4エディターテンプレート

数値入力用のテンプレートを作成しました。作成した場合

@Html.EditorFor(model => model.SomeValue, "Number")

正常に機能し、テンプレートが使用されます。

しかし、それは機能しません:

@Html.EditorFor(model => model.SomeValue)

なぜ基本型のエディターテンプレートの名前を指定する必要があるのですか?

44
Sam

エディタテンプレートは慣例に従って機能します。テンプレートの名前は、タイプの名前と一致する必要があります。たとえば、SomeValueint型の場合、~/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 を読むことをお勧めします。

91
Darin Dimitrov

エディターテンプレートでは、同じタイプExampleが必要です。

model.SomeValueはloremIpsumObjectのタイプです

EditorTemplateでは次のとおりです。

  @model YourNamespaceWhereIsYourClass.loremIpsumObject
  ...And your code in your editorTemplate....

例を見つけることができます here 日時

それはあなたを助けますか?

1