ASP MVC3コレクション用のカスタム編集(空かどうか)
-
10-10-2019 - |
質問
多くのグーグル、StackOverflowing(?)、およびブログ読み取りの後、私はまだ問題を完全に解決することができません。うまくいけば、この専門家コミュニティが救助に来ることができます!
指定:フィールドアイコレクションを持つ会社クラス(会社は多くのアドレスを持つことができます)。各アドレスには、いくつかの単純な文字列フィールドがあります。
短縮版:
ユーザーに会社に任意の数のアドレスを追加できるようにしたいと考えています。最初に、1セットのアドレステキストボックスを表示し、次に「もう1つのアドレスを追加」ボタンを表示します。 JavaScriptは問題ありません。むしろMVCパーツです。不明な場合、機能はこれを同時にする必要があります。http://www.mdelrosso.com/sheepit/index.php?lng=en_gb&sec=demo3
MVC EditorFormodel()関数を使用する必要があります。これは、すべての構成がエディターテンプレートに移動する必要があることを意味します。
これまでのステータス:
- 編集会社のページ(companyviewmodel)用に作成されたviewmodel
- uihint( "addresses")]をフィールドパブリックインコレクションアドレスに追加しました{get;設定; }
- 作成されたアドレスeditortemplate
アドレスeditortemplateでは、新しい会社を追加すると、渡されたモデルはnullです(驚きはありません)。追加アドレスのエディターを作成するにはどうすればよいですか? (Razorを使用して)の複数の化身を試しました。
@Html.EditorFor(m => new Address());
しかし、リモートで動作するものさえ生産することはできません。 (正確な上記の行には、「テンプレートは、フィールドアクセス、プロパティアクセス、単一次元アレイインデックス、またはシングルパラメーターカスタムインデクサー式でのみ使用できます。」)
ポインターをありがとう!
/ビクター
解決
これは現在の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")