エディター/ディスプレイテンプレートとHTMLヘルパーをどのように使用していますか?
-
18-09-2019 - |
質問
人々がどのように、いつエディター/ディスプレイテンプレートを使用しているのか、HTMLヘルパーを使用しているのか疑問に思うだけです。具体的には、エンティティをレンダリングするのではなく、異なるUI制御をレンダリングする際の使用について話している。
たとえば、次のATMのようなものがあります。
<tr>
<th><%= Html.LabelFor(x => x.ActivityTypeId) %></th>
<td><%= Html.EditorFor(x => x.ActivityTypeList, "MultiSelectDropDownList")%></td>
</tr>
<tr>
<th><%= Html.LabelFor(x => x.Name) %></th>
<td><%= Html.EditorFor(x => x.Name) %></td>
</tr>
<tr>
<th><%= Html.LabelFor(x => x.Description) %></th>
<td><%= Html.DisplayFor(x => x.Description, "DisplayString")%></td>
</tr>
しかし、最近、私はこれをやるべきかどうか疑問に思っています:
<tr>
<th><%= Html.LabelFor(x => x.ActivityTypeId) %></th>
<td><%= Html.MultiSelectDropDownList(x => x.ActivityTypeList)%></td>
</tr>
<tr>
<th><%= Html.LabelFor(x => x.Name) %></th>
<td><%= Html.EditorFor(x => x.Name) %></td>
</tr>
<tr>
<th><%= Html.LabelFor(x => x.Description) %></th>
<td><%= Html.DisplayString(x => x.Description)%></td>
</tr>
しかし、この2番目のオプションを使用すると、ミドルエディターを使用することが多くあります...私はhtml.textboxを使用して、私が好きなHTMLプロパティを設定できるという利点があります。
私は人々がここで使用しているパターンに興味があります...何かアイデアはありますか?
乾杯アンソニー
解決
EditorForとDisplayforはMVC 2の最も強力な側面であり、私の意見では、可能な限り使用および乱用する必要があります。
Brad Wilsonsのブログに飛び乗って、オブジェクトテンプレートを拡張して、属性で飾られたViewModelsからコンベンションベースの画面をすばやく削除する方法をチェックしてください。http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-5-master-page-templates.html
私は現在のプロジェクトでこの手法を使用していますが、これまでのところ、HTMLの1行も個々の画面用に書かれていません。 :d
他のヒント
私は2番目のものがとても好きです。
それはエレガントで、その盗まれた文字列からあなたを解放します:)
T4を変更しました(実際には、変更の過程で) Edit
, Create
, 、 と View
必要なコードを吐き出すテンプレート。そのコードは何も使用しません DisplayFor
また EditorFor
方法。私はこれらのメソッドのコードを掘っていませんが、そこにいくつかの反射が起こっているのが見られると確信しています。私の変更されたテンプレートは現在生成されています TextBoxFor
, DropDownListFor
, 、 と CheckBoxFor
.
JFARが必要に応じて言及したBrad Wilson Postでこの方法を使用できます。少なくとも、テンプレートは各フィールドのコードを吐き出します。 DisplayFor
また EditorFor
したがって、後で戻ることができ、特定のエディターに変更し、入力フィールドに必要な属性を追加できます。