2

フォームが渡された後にフォームにアイテムを追加するという、次のことを行うためにしばらく探していました。新しいアイテムの HTML をフォームに追加することはできましたが、投稿後に認識されません。それでは、私の問題をもう少し明確にしましょう。

プロジェクトというオブジェクトがあります。そのプロジェクトには、名前/電子メールと、メンバーが選択されているかどうかを確認するブール値を含むリストがあります (もちろん、チェックボックスを使用して)。

ビューでは、誰かがプロジェクトの詳細を入力して (既存の) メンバーを選択できるフォームが生成されます。新しいメンバーを作成できるボタンもあります。ボタンを押すと、プロジェクト フォームが非表示になり、新しい (PartialView/フォーム) が表示されます。必要なユーザーの詳細を入力すると、AJAX 要求を介して送信され、JSON オブジェクトが返されます。

新しいユーザーはユーザーテーブルに追加されますが、フォームは新しく追加されたメンバーを認識していないようです。ヘルパー (@CheckBoxFor など) によって生成された HTML を、テーブルに挿入した HTML でチェックしました。同じです。

フォーム自体を何らかの方法でリセットする必要があると思われますが (再バインド?)、私の検索試行では何も出てきませんでした。再バインドではなく、モデルをビューにバインドする方法を説明する execpt チュートリアル/stackoverflow の質問です。

コードが不足していることをお詫びします。説明が十分であることを願っています。

4

1 に答える 1

0

Editing Variable Length Listそれを達成するための非常に優れたアプローチを示している、Steven Sanderson によって書かれた記事を読むことをお勧めします。アイデアは、入力フィールドの名前のインデックスとして整数を使用するのではなく、Guid を使用し、.index特別な非表示フィールドを使用して現在の行のインデックスをモデル バインダーに示すべきであるということです。このようにして、フォームに動的に追加またはフォームから削除するフィールドの数に関係なく、モデル バインダーは常にコレクション プロパティを正常にバインドできます。

彼の記事では、Html.BeginCollectionItemこの作業を隠す素敵なカスタム HTML ヘルパーも示しています。

于 2013-01-25T09:13:02.543 に答える