8

ASP.NET MVC 2 Preview 1 の新機能の 1 つは、エディター テンプレートと表示テンプレートの概念のサポートです。これにより、単純な HTML ヘルパー呼び出しで特定のオブジェクトを表示または編集するためにレンダリングする方法を事前に定義できます。

<%=Html.EditorFor(customer => customer) %>
<%=Html.DisplayFor(customer => customer) %>

これはかなりクールですが、これと同じ目的を果たす部分ビューとの違いがよくわかりません。さらに、私が見た例では、エディター テンプレートに実際のフォーム タグが含まれておらず、特定のエディターにクライアント側の機能を提供する必要がある場合 (jQuery など)、そのコードを安全に配置することはできません。クライアントでロジックを追加するフォームに静的ハンドルがないためです。私が取り組んでいるアプリケーションでは、コンテンツを編集するためにレンダリングするエディター テンプレートと部分ビューが混在しています。フォームの複雑さに応じて、エディターを作成していますが、どちらか一方のアプローチを選択しましたが、これはもちろん、望ましくないレベルの矛盾をアプリケーションに追加します。

部分ビューよりもテンプレートを使用する理由、またはその逆を使用する理由 さらに、エディター テンプレートを使用する場合、そのエディターを使用するすべてのビューにコピーせずに、クライアント側のロジックをエディターに追加する理想的な方法は何ですか?

4

2 に答える 2

3

ScottGu は、MVC V2 に関する彼のブログ投稿で、これについて説明しています。

私が収集したものから、これはヘルパーに渡すオブジェクトの各プロパティの入力を作成します。したがって、オブジェクトがある場合:

public class Customer
{
    public string Name { get; set; }
    [UIHint("MyCoolCalendar")]
    public DateTime CoolDate { get; set; }
}

そして、エディタを作成します:

<%= Html.EditorFor(customer => customer) %>

オブジェクト全体をラップするカスタム コントロールを作成しなくても、顧客の名前のテキスト入力と CoolDate の MyCoolCalendar (カスタム定義のコントロール) が生成されます。プロパティのタイプ/uihint からコントロールのタイプを自動的に推測します。少なくともこれは、まだテストする時間がなくても理解できたとおりです。

于 2009-08-20T19:53:05.577 に答える
0

これは、うまく機能することがわかった1つの例です。

住所を持つ顧客がいるとします。NEW Customer の Address を作成することはできませんが、Association を介して、フィールド Address を持つ Customer オブジェクトを持つことができます。

次に、Customer の「Create」メソッドで呼び出しますHtml.EditorFor(c => c.Address);(ここで必要に応じてカスタム テンプレートを作成できます)。完全に入力された Address オブジェクトが生成され、Customer の前に保存できるため、依存関係が解決されます。

さて、国のリストや州などの参照データがある場合は、部分ビューを使用してレンダリングし、関連付けを気にしない方がよいでしょう。

お役に立てれば、

-ヴラド

于 2010-02-08T03:24:43.420 に答える