Credo che a questa domanda si applica a qualsiasi della "Per" aiutanti HTML, ma il mio problema specifico è usando CheckBoxFor ...Foreach sulla proprietà IEnumerable e CheckBoxFor in ASP.Net MVC
Ho un modello che è di digitare IEnumerable, dove diritti è un semplice POCO. Questo modello è in realtà una proprietà di un modello più grande per cui ho creato un EditorTemplate. Ecco il quadro più ampio del mio modello:
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;}
}
ho creato un editortemplate chiamata "LISTRIGHTS" che la mia vista principale utilizza. Ad esempio: <% = Html.EditorFor (m => m.Rights)%>.
In ListRights.ascx, voglio codice come questo:
<table>
<% foreach(rights access in Model)
{ %>
<tr>
<td>
<%=Html.CheckBoxFor(access) %>
</td>
<td>
<%=access.Description %>
</td>
</tr>
<% } %>
</table>
So che la linea CheckBoxFor non funziona, ma voglio fare qualcosa che genera lo stesso risultato, come se l'accesso fosse una proprietà su il modello.
Nell'esempio precedente, desidero che tutto funzioni automaticamente su post.
ho provato fingendo il checkbox con codice simile a questo, ma non 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>
Qualche suggerimento?
non lo faccio ottieni davvero questa risposta, perché dovresti affrontare tutti questi problemi? – mare
ok, dopo un po 'di riflessione e andando sul blog di Steven vedo quello che stai cercando di ottenere. Le soluzioni di Steve funzionano in questo caso. Anche se non penso che l'esperienza dell'utente sia utile in questo caso, modificando più elementi in questo modo e pubblicandoli tutti al controller in un colpo solo. – mare