3

私は ASP.NET MVC を初めて使用するので、助けが必要です。フォームが動的に作成されるフォームを作成する必要があります。たとえば、Person という名前のモデルがあるとします。Person には姓と名があります。フォームでは、ユーザーが人の姓名を入力できるようにしたいと考えています。その方法は知っていますが、ユーザーが複数の人を追加して、それを単一のフォーム送信にできるようにする方法がわかりません。

ページ (ビュー) の最初のロードでは、デフォルトで 2 つの空のテキストボックス (名と姓) が表示されます。また、ユーザーがフォームに別の行を追加し、2 番目の人に同じ 2 つのテキスト ボックスを表示できるようにする追加ボタンもあります。ユーザーがそれを送信すると、名用に 2 つのテキストボックス、姓用に 2 つのテキストボックスが表示されます。

ポストバックなしでこれを行う方法があるかどうかはわかりません。または、私の唯一の選択肢はポストバックですか?

編集: Razor エンジンを使用していることを忘れていました。

ありがとう

4

3 に答える 3

3

複数の POST は必要ありません。フォームで Person の配列をアクションに送信する必要があります。アクションは次のようになります

[HttpPost]
public ActionResult AddPeople(Person[] people){ ... }

これを実現するには、ビューで入力フィールドを列挙する必要があります。次のように、0 から始まり、それに応じて増分するインデックスを付ける必要があります。

@using(Html.BeginForm("AddPeople","TheController", FormMethod.Post))
{
  <input type="text" name="people[0].FirstName" />
  <input type="text" name="people[0].LastName" />
  ...
  <input type="text" name="people[1].FirstName" />
  <input type="text" name="people[1].LastName" />
  ...
  <input type="text" name="people[n].FirstName" />
  <input type="text" name="people[n].LastName" />
}

簡単な DOM 操作で、javascript を使用して新しいフィールドを追加する必要があります。インデックスを順番に保つことを忘れないでください。

于 2013-07-03T14:41:53.447 に答える
1

Phil Haackは、あなたがやりたいことのほとんどについて記事を書きました。動的にする (つまり、リストに 1 人から多数の人が参加できるようにする) には、追加ボタンにクリック イベントを追加して入力フィールドの新しい行をコピーすることで、JavaScript を操作する必要があります。最初にその記事を読んで、入力フィールドをどのように構造化する必要があるかを理解することをお勧めします。

于 2013-07-03T14:37:21.533 に答える