Come utilizzare EditorFor in un foreach

Ho un modello:

public class MyListModel { public int ID {get;set;} public List Users{get;set;} } 

Come utilizzo il metodo Html.EditorFor all’interno di un foreach?

 @model MyListModel  @foreach (var item in Model.Users) {  } 
@Html.EditorFor(item.Enabled)

 @Html.EditorFor(x=> item.Enabled) 

È stato sottolineato più volte che la pubblicazione di un modello di questo tipo sul server non funzionerà in mvc di default. Per la corretta modifica con EditorFor in un ciclo – for deve essere usato come in:

  @for(var i = 0; i< Model.Users.Count;i++){ Html.EditorFor(i=>Model.Users[i]) } 
 @for (var i = 0; i < Model.Users.Count; i++) {  @Html.EditorFor(model => model.Users[i].Enabled) @Html.EditorFor(model => model.Users[i].FirstName) @Html.EditorFor(model => model.Users[i].LastName)  } 

Inoltre sono richieste alcune variabili nascoste per almeno una proprietà dell’utente:

 @for (var i = 0; i < Model.Users.Count; i++) { @Html.HiddenFor(model => model.Users[i].FirstName) } 

Non è quello che chiameresti elegante, ma funziona rispetto al binding nella tua azione post.

C’è qualche altra ragione (esempio a parte) per usare esplicitamente il foreach te stesso? È ansible creare un helper Editor personalizzato (o Display) per la User class e creare @Html.EditorFor(model=>model.Users) . Rasoio utilizzerà internamente il foreach per l’elaborazione di ciascun elemento con il tuo Helper personalizzato.

Solo un’idea per chi visita la domanda con davvero nessun indizio su come gestire questi casi.