Question

Je crois que cette question s'applique à l'un des « Pour » aides Html, mais mon problème spécifique utilise CheckBoxFor ...

J'ai un modèle qui est de type IEnumerable, où les droits est simple POCO. Ce modèle est en fait une propriété d'un plus grand modèle que j'ai créé un EditorTemplate pour. Voici 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 mon point de vue principal utilise. Par exemple: <% = Html.EditorFor (m => m.Rights)%>.

En ListRights.ascx, je veux code comme ceci:

<table>
  <% foreach(rights access in Model)
  { %>
      <tr>
        <td>
            <%=Html.CheckBoxFor( access ) %>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

Je sais que la ligne CheckBoxFor ne fonctionne pas, mais je veux faire quelque chose qui génère le même résultat, comme si l'accès était une propriété sur le modèle.

Dans l'exemple ci-dessus, je voudrais que tout AutoBind sur le poteau.

J'ai essayé truquer le CheckBox avec le code semblable à cela, mais il n'AutoBind pas:

<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>

Toutes les suggestions?

Était-ce utile?

La solution 2

J'ai trouvé la réponse en utilisant un billet de blog par Steve Sanderson à http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

Utilisation de "Html.BeginCollectionItem" travaillé dans ma situation.

J'ai créé un EditorTemplate des droits (dans mon exemple). Puis ajouté BeginCollectionItem Steve à ce modèle. J'ai appelé le modèle à l'aide Html.RenderPartial comme suggéré dans le blog de Steve.

Je voulais utiliser Html.EditorFor (m => m.item), mais cela ne fonctionne pas parce que l'article est dans la ForEach et non dans le modèle. EditorFor pourrait être utilisé dans ce cas?

Autres conseils

Je suppose que vous avez eu des problèmes parce que cela ne fonctionne pas

<%=Html.CheckBoxFor(access) %>

et cela ne fonctionne pas non plus

<%=Html.CheckBoxFor(access=>access.HasAccess) %>

mais cela devrait fonctionner

<%=Html.CheckBoxFor(x=>access.HasAccess) %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top