全て、
チェックボックスと ASP.MVC に関する多くの投稿を読みましたが、それほど賢くはありません。
私のシナリオ:
for-each でレンダリングするために、サマリー オブジェクトのコレクションをビューに渡す、厳密に型指定されたビューがあります。この集計オブジェクトには、一意の ID に基づくラベル データが含まれています。また、行にチェックボックスを追加するので、次の方法で行います。
<td>
<%= Html.CheckBox("markedItem", Model.MarkedItem, new { TrackedItemId = Model.Id })%>
</td>
送信された結果を取得するために POST を実行すると、アクション メソッドは厳密に型指定された ViewModel を取得しますが、リストの作成に使用した元のサマリー オブジェクトは取り込まれません。
わかりました、これは面倒ですが、理由は理解できるので、我慢します。
次に、文字列コレクションである "MarkedItem" という新しいプロパティを ViewModel に追加します。
ポストバック時に、チェックボックスが変更された場合、このマークされたアイテムは前後の状態で満たされますが、それらがどのキー用であったかはわかりません。明確にするために、これを送ると
- TrackedItemId = A、値 = false
- TrackedItemId = B、値 = true
- TrackedItemId = C、値 = false
ページを次のように設定します。
- TrackedItemId = A、値 = true
- TrackedItemId = B、値 = true
- TrackedItemId = C、値 = false
私はこれを返します:
- MarkedItem[0] = true
- MarkedItem[1] = false
- MarkedItem[2] = true
- MarkedItem[3] = false
つまり、[0] は新しい値、[1] は古い値、[2] と [3] は変更されていない値を表します。
私の質問は次のとおりです。
- このように前と後に取得するのは正しいですか?最新の値のみを送信する方法はありますか?
- 返される文字列配列に意味を追加できるように、追加したカスタム属性 (TrackedItemId) を取得するにはどうすればよいですか?
これまでのところ、私は MVC が好きですが、このような単純なものを処理しないのは本当に混乱します。私はJavaScript初心者でもあるので、カスタムビューモデルでデータを返したいので、それが答えではないことを本当に願っています。
説明/アドバイスを簡単にしてください:)