Liaison de modèle personnalisé pour les listes dans MVC 4
Liaison d'une liste d'éléments (IList) à une vue dans MVC a été un défi courant pour les développeurs. Bien que des solutions plus anciennes existent, MVC 4 introduit des améliorations qui simplifient le processus.
Pour les scénarios dans lesquels chaque élément de la liste nécessite son propre formulaire pour la saisie des données, envisagez de structurer votre ViewModel comme suit :
public class MyViewModel { public List<Person> Persons{get;set;} }
Dans la Vue, dans le BeginForm :
@model MyViewModel @for( int i = 0; i < Model.Persons.Count(); ++i) { @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) }
L'action HttpPost recevrait la Vue mise à jour Modèle :
[HttpPost]public ViewResult(MyViewModel vm) { ... }
Notez que lors de la publication, seules les propriétés avec les entrées correspondantes dans le formulaire auront des valeurs. En effet, la liaison de modèle de MVC recherche des ID consécutifs et arrête la liaison après avoir rencontré un écart. Par conséquent, il est important de s'assurer que tous les éléments de la liste ont des identifiants valides et qu'il n'y a aucune lacune dans le formulaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!