tag net mvc htmlattributes for example asp asp.net-mvc mvc-editor-templates

asp.net mvc - net - Cómo usar EditorFor dentro de un foreach



select asp-for asp-items (3)

Tengo un modelo:

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

¿Cómo uso 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>


¿Hay alguna otra razón (ejemplo aparte) para usar explícitamente el foreach usted mismo? Puede hacer un Ayudante de Editor Personalizado (o Pantalla) para User class y hacer @Html.EditorFor(model=>model.Users) . Razor usará foreach internamente para procesar cada elemento con su Ayuda personalizada.

Solo una idea para aquellos que visitan la pregunta y realmente no tienen ni idea de cómo manejar estos casos.


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

Se ha señalado muchas veces que la publicación de dicho modelo en el servidor no funcionará en mvc de forma predeterminada. Para editar correctamente con EditorFor en un bucle, debe usarse como en:

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


@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, se requieren algunas variables ocultas para al menos una propiedad del usuario:

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

No es lo que llamarías elegante, pero funciona con respecto al enlace en tu acción posterior.