Come utilizzare EditorFor all'interno di un file foreach
-
22-09-2019 - |
Domanda
Ho un modello:
public class MyListModel
{
public int ID {get;set;}
public List<User> Users{get;set;}
}
Come posso utilizzare il metodo Html.EditorFor all'interno di un foreach?
@model MyListModel
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model.Users) {
<tr>
<td>
@Html.EditorFor(item.Enabled)
</td>
</tr>
}
</table>
Soluzione
@Html.EditorFor(x=> item.Enabled)
E 'stato sottolineato più volte che la pubblicazione di un tale modello di nuovo al server non funziona in MVC per impostazione predefinita.
Per l'editing correttamente con EditorFor
in un ciclo - for
dovrebbe essere usato come in:
@for(var i = 0; i< Model.Users.Count;i++){
Html.EditorFor(i=>Model.Users[i])
}
Altri suggerimenti
@for (var i = 0; i < Model.Users.Count; i++)
{
<tr>
<td>@Html.EditorFor(model => model.Users[i].Enabled)</td>
<td>@Html.EditorFor(model => model.Users[i].FirstName)</td>
<td>@Html.EditorFor(model => model.Users[i].LastName)</td>
</tr>
}
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 legame nell'azione post.
C'è qualche altro motivo (ad esempio a parte) per esplicitamente utilizzando il foreach
te stesso? Si potrebbe fare un editor personalizzato (o display) aiuto per User class
e fare @Html.EditorFor(model=>model.Users)
. Razor utilizzerà il foreach
internamente per l'elaborazione di ogni elemento con il vostro aiuto personalizzato.
Solo un'idea per chi visita la domanda con davvero idea di come gestire questi casi.