Html.BeginCollectionItem を使用してコレクションを部分ビューに渡す
ユーザーがモデルの複数のインスタンスを追加できるフォームを作成する場合、多くの場合、インスタンスごとに部分ビューをレンダリングする必要があります。 ASP.NET MVC は、このプロセスを容易にするための Html.BeginCollectionItem ヘルパーを提供します。
BeginCollectionItem ヘルパーは、モデルの現在のインスタンスのフォーム フィールドを含むテーブル行を作成します。フォームが送信されると、これらのフィールドに入力されたデータは、モデル オブジェクトの対応するプロパティにバインドされます。
BeginCollectionItem を使用するには、まず単一インスタンスのフォーム フィールドを表す部分ビューを作成する必要があります。モデルの。たとえば、_Recipient.cshtml という名前の次の部分ビューについて考えてみましょう。
@model CashRecipientVM <div>
この部分ビューは、2 つのテキスト ボックス (受信者と金額) と削除ボタンを含むフォームを定義します。 BeginCollectionItem ヘルパーにより、モデルの各インスタンスに独自のフォーム フィールドのセットが確実に存在します。
メイン ビューで、BeginCollectionItem ヘルパーを使用して、これらの部分ビューのコレクションをフォームに追加できます。例:
@model IEnumerable<CashRecipientVM> @using (Html.BeginForm()) { <div>
このコードは、CashRecipientVM オブジェクトのリストを含むフォームを作成します。 BeginCollectionItem ヘルパーは、リスト内の各オブジェクトの部分ビューをレンダリングするために使用されます。
フォームには、ユーザーがモデルの追加インスタンスを追加できる「追加」ボタンが含まれています。 「追加」ボタンをクリックすると、別の部分ビューを取得するためにコントローラーに対して AJAX リクエストが行われます。取得された部分ビューはフォームに追加されます。
フォームが送信されると、フォーム フィールドに入力されたデータは、CashRecipientVM オブジェクトの対応するプロパティにバインドされます。その後、コントローラーはこれらのオブジェクトを処理してデータベースに保存できます。
以上がHtml.BeginCollectionItem を使用して ASP.NET MVC 部分ビューで複数のモデル インスタンスを管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。