4

多くのグーグル、スタックオーバーフロー(?)、およびブログを読んだ後、私はまだ問題を完全に解決できません。願わくば、この専門家コミュニティが助けに来てくれることを願っています!

与えられたもの: フィールド ICollection を持つ Company クラス (Company は多くのアドレスを持つことができます)。各住所にはいくつかの単純な文字列フィールドがあります。

短縮版:

ユーザーが会社に任意の数のアドレスを追加できるようにしたい。最初に 1 セットの Address テキストボックスを表示し、次に [Add one more address] ボタンを表示します。Javascript は問題ではなく、mvc の部分です。不明な場合、機能は次のようになります: http://www.mdelrosso.com/sheepit/index.php?lng=en_GB&sec=demo3

MVC EditorForModel() 関数を使用する必要があります。つまり、すべての構成をエディター テンプレートに入れる必要があります。

これまでのステータス:

  • 会社の編集ページ (CompanyViewModel) の ViewModel を作成しました。
  • フィールド public ICollection Addresses { get; に [UIHint("Addresses")] を追加しました。設定; }
  • 作成された住所 EditorTemplate

Addresses EditorTemplate では、新しい会社を追加するときに、渡されるモデルは Null です (驚くことではありません)。追加アドレス用のエディタを作成するにはどうすればよいですか? 私は(Razorを使用して)の複数の化身を試しました:

@Html.EditorFor(m => new Address());

しかし、リモートで作業しても何も生産できません。(上記の正確な行では、「テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます。」というエラーが表示されます。)

ご指摘ありがとうございます。

/ビクター

4

1 に答える 1

4

これは、現在の API の欠点です。あなたがそれを行うことができる1つの方法は、挿入フォームの生成を担当する子アクションを持つことです

コントローラーで:

[ChildActionOnly]
public ActionResult AddAddress() {
    return View(new Address()); // pass an instance so view works
}

新しいビューを追加AddAddress.cshtml

@model Address
@Html.EditorForModel()

次に、エディターテンプレートで使用します

@Html.Action("AddAddress")
于 2010-12-09T20:08:47.877 に答える