に基づく: MVCHtml.CheckBoxおよびフォーム送信の問題
次の例を考えてみましょう。意見:
<% using(Html.BeginForm("Retrieve", "Home")) %>
<% { %>
<%foreach (var app in newApps) { %>
<tr>
<td><%=Html.CheckBox(""+app.ApplicationId )%></td>
</tr>
<%} %>
<input type"submit"/>
<% } %>
コントローラ:
List<app>=newApps; //Database bind
for(int i=0; i<app.Count;i++)
{
var checkbox=Request.Form[""+app[i].ApplicationId];
if(checkbox!="false")// if not false then true,false is returned
}
提案された解決策は、MVCの概念から外れているように見えるRequest.Formの手動解析に関するものでした。このコントローラーメソッドの単体テスト中に問題が発生します。この場合、入力パラメータとして渡されるViewModelの代わりに、モックRequest.Formオブジェクトを生成する必要があります。
Q:このようなフォームを送信して、送信されたコントロールのコレクションを含むViewModelオブジェクトが入力パラメーターとしてコントローラーメソッドに渡されるようにする他の解決策はありますか?
例えば:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Retrieve(AppList[] applist)
また
public ActionResult Retrieve(AppList<App> applist)
等