私はコードの使用量を削減しようとしています。私は文字列とテキストエリアのためのstring.cshtmlとmultiline.cshtml EditorTemplateを持っています。彼らは一度使うだけで十分です。例えば、これは、(余分なHTMLなし)私のstring.cshtmlです:DropDownListの汎用EditorTemplate?
@Html.Label(ViewData.ModelMetadata.DisplayName)
@Html.TextBox("",
ViewData.TemplateInfo.FormattedModelValue,
new { placeholder = ViewData.ModelMetadata.Watermark })
@if (ViewData.ModelMetadata.IsRequired)
{
@:<span class="required"></span>
}
@Html.ValidationMessage("")
それはほとんど同じ私のTextAreaのです。私がしたいことは、私のドロップダウンリストに似たEditorTemplateを作成することです。ような何か:
...
@Html.DropDown("", ......)
....
は、私は上記のテキストボックスのために括弧内のコードを使用してバリエーションを試してみましたが、私はそこに何が起こるのか、コード、私の実際のドロップダウンリストに基づいて、考え出す試してみました。私は運がなかった。
このようにして、[UIHint("TemplateName")]
を使用するか、@Html.EditorFor(m => m.MyProperty, "TemplateName")
のようにして呼び出すことができます。ここで
は私のDropDownListコントロールは、通常のビューで次のようになります。
...
@Html.DropDownListFor
(m => m.MyProperty,
new SelectList(Model.MyPropertyList,
"Value", "Text"))
...
上記のコードは、私の見解で罰金を動作し、何の解決策が存在しない場合、私はちょうどそれを再使用しておこう。しかし、私は作成したい他のドロップダウンリストを持っており、すべてのドロップダウンリストをテンプレートに入れて再利用したいと思っています。私はそれらをすべて統治するために、1つのドロップダウンリストEditorTemplateを持つ方が良いと思った。 ;)
偉大な説明をありがとうございました。私はちょうど再使用のための他のフォームコントロールでテンプレートに私の作業コードを入れます。これらのテンプレートは、すでに@Html.EditorFor()を使用しています。これらは、String.cshtmlとMultilineText.cshtml EditorTemplatesを使用します。 – REMESQ