Maison > développement back-end > C++ > Comment puis-je lier efficacement une liste à une vue dans ASP.NET MVC 4 pendant HttpPost ?

Comment puis-je lier efficacement une liste à une vue dans ASP.NET MVC 4 pendant HttpPost ?

Barbara Streisand
Libérer: 2024-12-27 21:03:13
original
1041 Les gens l'ont consulté

How Can I Effectively Bind a List to a View in ASP.NET MVC 4 During HttpPost?

Liaison de modèle à une liste dans MVC 4

Lorsque vous essayez de lier une liste d'éléments à une vue dans MVC 4, des problèmes peuvent survenir pendant HttpPost. Pour relever ce défi, considérez le modèle suivant :

ViewModel :

Créez un ViewModel contenant la liste IList des éléments :

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

Vue :

Dans la vue, parcourez l'IList et générez des entrées de formulaire pour chaque propriété :

@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

Action :

Dans la méthode d'action, gérez l'objet MyViewModel publié :

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

Considérations :

  • Seules les propriétés avec les entrées correspondantes dans la vue auront des valeurs sur HttpPost.
  • La liaison de modèle de MVC ne fonctionne que pour les identifiants consécutifs. Si vous masquez des éléments de manière conditionnelle, les données risquent de ne pas être liées correctement.
  • Pour résoudre le problème des lacunes dans les identifiants, envisagez d'utiliser cette solution :
@for( int i = 0; i < Model.Persons.Count(); ++i)
{
    @Html.Hidden($"Persons[{i}].PersonId", Model.Persons[i].PersonId)
    @Html.Editor($"Persons[{i}].FirstName", Model.Persons[i].FirstName) 
    @Html.Editor($"Persons[{i}].LastName", Model.Persons[i].LastName)           
}
Copier après la connexion

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!

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