Maison > développement back-end > C++ > Comment gérer efficacement la liaison de modèle avec des listes dans ASP.NET MVC 4 ?

Comment gérer efficacement la liaison de modèle avec des listes dans ASP.NET MVC 4 ?

Susan Sarandon
Libérer: 2025-01-03 09:32:39
original
766 Les gens l'ont consulté

How to Effectively Handle Model Binding with Lists in ASP.NET MVC 4?

Liaison de modèle à une liste dans 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.

ViewModel Configuration

public class MyViewModel
{
   public List<Person> Persons{get;set;}
}
Copier après la connexion

Afficher la mise en œuvre

@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)         
}
Copier après la connexion

Actions Méthode

[HttpPost]public ViewResult(MyViewModel vm)
{
...
}
Copier après la connexion

Considérations

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)           
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal