Maison >développement back-end >C++ >Comment gérer efficacement la liaison de modèle avec des listes dans ASP.NET MVC 4 ?
Lorsque vous essayez de lier une liste d'éléments à une vue, des problèmes peuvent survenir avec la méthode HttpPost. Bien que des ressources utiles telles que l'article de Phil Haack existent, elles peuvent ne pas refléter les mises à jour potentielles de MVC 4. Pour résoudre ce problème, explorons une solution détaillée.
public class MyViewModel { public List<Person> Persons{get;set;} }
@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) }
[HttpPost]public ViewResult(MyViewModel vm) { ... }
Notez que seules les propriétés avec des champs de saisie auront des valeurs après la publication. De plus, la liaison de modèle de MVC ne reconnaît que les identifiants consécutifs. Prenons cet exemple où un élément est masqué sous condition :
@for( int i = 0; i < Model.Persons.Count(); ++i) { if(i != 4)//conditionally hide 5th item, { //but BUG occurs on postback, all items after 5th will not be bound to the the list @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) } }
Dans ce cas, seuls les quatre premiers éléments seront liés à la publication. Pour éviter cela, assurez-vous d'avoir des identifiants consécutifs pour tous les éléments de la liste IL.
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!