2011-07-01 5 views
0

チェックボックス、テキストボックス、および時折のドロップダウンリストをMVCアプリケーションに含むaspリピータの機能を複製する必要があります。従来のWebフォームでは、ポストバックイベントが発生し、チェックボックス(id)に関連付けられたすべてのコントロールとその値を簡単に取得できます。複数のフォーム要素を持つリピータのMVCと選択するチェックボックス

チェックボックスをオンにしたアイテムの値を投稿に戻す方法については、誰でも良い提案があります。私はいくつかの配列をFormCollection(と強く型付けされたビュー)に戻すことができますが、私は値を効果的にリンクする良い方法を見つけ出すことができませんでした。

すべての行がチェックボックスおよびテキストボックスを持って、いくつかの行をさらに説明するためにドロップダウンリスト

を持っ... 行1は、チェックボックスを有しており、テキストボックス 行2は、チェックボックス、テキストボックス、およびドロップダウンを有しますリスト。

ユーザーが行1と2を選択した場合、すべてのフォーム要素の値を取得する必要があります(一部の計算の場合)。また、私は検証エラーを処理する良い方法を思いついたわけではありません。

ご意見をいただければ幸いです。

答えて

1

最も単純なことは、リピーターを持つコレクションを繰り返し処理することです。カミソリの構文を使用して:

@using (Html.BeginForm()) { 
<table> 
@for (var i = 0; i < Models.Items.Count; i++) { 
<tr> 
<td> 
    @Html.CheckBoxFor(x => Model.Items[i].SomeBool) 
</td> 
<td> 
    @Html.TextBoxFor(x => Model.Items[i].SomeString) 
</td> 
</tr> 
} 
</table> 
<button type="submit">Go</button> 
} 

そしてコントローラ方法:

[HttpPost] 
public ActionResult Index(MyViewModel viewModel) { 
// view model will be bound to values in form 
} 

ビューにおけるモデルを仮定すると、式MyViewModelです。どのように動作するのかがわかると、ASP.NET MVC grid frameworksを見ることができます。

+0

問題はhtmlの作成ではなく、選択した値の抽出と、選択したチェックボックスに関連付けられている要素のみを使用することです。フォームがポストすると、同じ名前のプロパティを持つすべての要素が配列としてサーバーに送信されます。チェックボックス配列と各要素についてtrueを繰り返すだけで、テキストボックス配列とドロップダウンリスト配列の対応する要素を見つけることができます。問題はすべてのレコードでddl isntなので、配列の要素が違う – jason