1

jQueryを使用して動的に新しいエントリ(テーブルの行)を作成するボタンがあります。各エントリは、htmlテーブルの行です。

各行には、各列に入力(テキストボックス、ラジオボタン、チェックボックス)などがあります。

必要な数の行を追加できるため、これらの行の配列またはコレクションができあがります。

フォームを投稿すると、formscollectionにこのデータが表示されないようで、これらのコントロールをバインド用のデータオブジェクトに変換する方法がよくわかりません。

したがって、基本的に2つの質問があります。

  1. 動的に作成されたコントロールと、それらがフォーム投稿に表示されることを確認することに問題はありますか?

  2. データのテーブル構造をコントローラーに渡す方法は何ですか。ほとんどの場合、各行がレコードオブジェクトを表し、そのようなことが可能であれば、レコードのコレクションをコントローラーに渡します。

助言がありますか?

4

3 に答える 3

1

コレクションを取得するには、テキストボックスの名前が「MyRecord.MyList[0].Field1」のようなものであることを確認してください。MVC は、それを列挙可能なものに自動的に引き上げます。JavaScript の追加では、追加された各行に適切にインクリメントされたインデックスがあることを確認してください (たとえば、"MyRecord.MyList[1].Field1" という名前の新しいフィールド)。

于 2009-12-18T14:25:50.043 に答える
0

動的に作成された要素が form タグの間にあることを確認する必要があります。

デフォルトのモデル バインディングは、「Thing[3].Name」になるような方法でフィールドに名前を付けた場合、オブジェクトの配列にバインドします (これは、4 行目のゼロ バインド配列の Name フィールドです)。

Action メソッドの署名は次のようになります。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MethodName(thing[] things)
{
    ...  
}

親切、

ダン

于 2009-12-18T14:24:37.613 に答える
0

各行の ID が一意であることを確認してください。ただし、サーバーに投稿しているフォーム内にある場合は、投稿する必要があります。投稿はどのように行っていますか? JQueryで投稿していますか?

于 2009-12-18T14:33:03.807 に答える