Cómo utilizar EditorFor dentro de un foreach
-
22-09-2019 - |
Pregunta
Tengo un modelo:
public class MyListModel
{
public int ID {get;set;}
public List<User> Users{get;set;}
}
¿Cómo se utiliza el método Html.EditorFor dentro de un foreach?
@model MyListModel
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model.Users) {
<tr>
<td>
@Html.EditorFor(item.Enabled)
</td>
</tr>
}
</table>
Solución
@Html.EditorFor(x=> item.Enabled)
Se ha señalado muchas veces que la publicación de dicha vuelta a un modelo de servidor no funcionará en mvc por defecto.
Para editar correctamente con EditorFor
en un bucle - for
se debe utilizar como en:
@for(var i = 0; i< Model.Users.Count;i++){
Html.EditorFor(i=>Model.Users[i])
}
Otros consejos
@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>
}
Además de algunos variables ocultas para al menos una propiedad del usuario se requieren:
@for (var i = 0; i < Model.Users.Count; i++)
{
@Html.HiddenFor(model => model.Users[i].FirstName)
}
No es lo que llamarían elegante pero funciona con respecto a la unión en su acción posterior.
¿Hay alguna otra razón (aparte ejemplo) para usar explícitamente el foreach
ti mismo? Se podría hacer un ayudante editor personalizado (o pantalla) para User class
y @Html.EditorFor(model=>model.Users)
maquillaje. Razor utilizará el foreach
internamente para procesar cada elemento con su ayudante personalizado.
Es sólo una idea para aquellos que visitan la pregunta con la verdad ni idea de cómo manejar estos casos.