Maison >développement back-end >C++ >Comment puis-je lier efficacement des listes d'éléments à des vues dans MVC 4 ?

Comment puis-je lier efficacement des listes d'éléments à des vues dans MVC 4 ?

DDD
DDDoriginal
2024-12-30 04:18:28612parcourir

How Can I Efficiently Bind Lists of Items to Views in MVC 4?

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!

Déclaration:
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