Foreach sur la propriété IEnumerable et CheckBoxFor dans ASP.Net MVC
Je crois que cette question s'applique à tout de la "Pour" Html helpers, mais mon problème est à l'aide de CheckBoxFor...
J'ai un modèle qui est de type IEnumerable, où les droits est une simple POCO. Ce modèle est en fait une propriété d'un plus grand modèle que j'ai créé un EditorTemplate pour. Ici est la plus grande image de mon modèle:
public class bigmodel
{
public string Title {get; set;}
public string Description {get; set;}
[UIHint("ListRights")]
public IEnumerable<rights> Rights {get;set;}
}
public class rights
{
public bool HasAccess {get; set;}
public string Description {get;set;}
}
J'ai créé un editortemplate appelé "ListRights" que ma vue principale utilise. Par exemple: <%=Html.EditorFor(m => m.Des droits de l') %>.
Dans ListRights.ascx, je veux un code comme ceci:
<table>
<% foreach(rights access in Model)
{ %>
<tr>
<td>
<%=Html.CheckBoxFor( access ) %>
</td>
<td>
<%=access.Description %>
</td>
</tr>
<% } %>
</table>
Je sais que le CheckBoxFor ligne ne fonctionne pas, mais je veux faire quelque chose qui génère le même résultat, comme si l'accès a été une propriété sur le modèle.
Dans l'exemple ci-dessus, je voudrais tout d'autobind sur le post.
J'ai essayé de simuler la Case avec un code similaire à cela, mais il n'a pas autobind:
<table>
<% for(int i=0; i < Model.Count(); i++)
{ %>
<tr>
<td>
<%=Html.CheckBox(string.Format("[{0}].HasAccess",i), Model.ElementAt(i).HasAccess)%>
</td>
<td>
<%=access.Description %>
</td>
</tr>
<% } %>
</table>
Des suggestions?
source d'informationauteur Mike Therien
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez eu des problèmes parce que cela ne fonctionnait pas,
et cela ne fonctionne pas, soit
mais cela devrait fonctionner
J'ai trouvé la réponse à l'aide d'un post de blog de Steve Sanderson à http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/
À L'Aide De Html.BeginCollectionItem" travaillé dans ma situation.
J'ai créé un EditorTemplate pour les droits de l' (dans mon exemple). Ensuite ajouté Steve BeginCollectionItem à ce modèle. J'ai appelé le modèle à l'aide de Html.RenderPartial comme suggéré dans le blog de Steve.
Je voulais utiliser le langage Html.EditorFor(m => m.point), mais cela ne fonctionne pas parce que l'article est dans le ForEach et pas dans le modèle. Pourrait EditorFor être utilisé dans ce cas?