Basé sur: MVC Html.CheckBox and form submit issueprésentation correcte des formulaires avec des contrôles autogénérées
Considérons l'exemple suivant. Vue:
<% using(Html.BeginForm("Retrieve", "Home")) %>
<% { %>
<%foreach (var app in newApps) { %>
<tr>
<td><%=Html.CheckBox(""+app.ApplicationId)%></td>
</tr>
<%} %>
<input type"submit"/>
<% } %>
Controller:
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
}
Solution proposée était sur l'analyse manuelle de Request.Form qui semble pour moi de conception MVC. Il fait le problème pendant le test unitaire de cette méthode de contrôleur. Dans ce cas, j'ai besoin de générer un objet Request.Form mock au lieu de voir un ViewModel passé en paramètre d'entrée. Q: Existe-t-il une autre solution pour soumettre des formulaires comme celui-ci, afin que l'objet ViewModel, contenant la collection de contrôles soumis, soit transmis comme paramètre d'entrée à la méthode du contrôleur?
Par exemple:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Retrieve(AppList[] applist)
ou
public ActionResult Retrieve(AppList<App> applist)
etc
Andrey, j'ai posté une autre solution. Essayez-le. –