Utilisation de Html.BeginCollectionItem pour transmettre une collection à une vue partielle
Lors de la création d'un formulaire permettant aux utilisateurs d'ajouter plusieurs instances d'un modèle , il est souvent nécessaire de restituer une vue partielle pour chaque instance. ASP.NET MVC fournit l'assistant Html.BeginCollectionItem pour faciliter ce processus.
L'assistant BeginCollectionItem crée une ligne de tableau qui contient les champs de formulaire pour l'instance actuelle du modèle. Lorsque le formulaire est soumis, les données saisies dans ces champs seront liées aux propriétés correspondantes de l'objet modèle.
Pour utiliser BeginCollectionItem, vous devez d'abord créer une vue partielle qui représente les champs du formulaire pour une seule instance. du modèle. Par exemple, considérons la vue partielle suivante nommée _Recipient.cshtml :
@model CashRecipientVM <div>
Cette vue partielle définit un formulaire avec deux zones de texte (pour Destinataire et Montant) et un bouton de suppression. L'assistant BeginCollectionItem garantit que chaque instance du modèle aura son propre ensemble de champs de formulaire.
Dans la vue principale, vous pouvez utiliser l'assistant BeginCollectionItem pour ajouter une collection de ces vues partielles au formulaire. Par exemple :
@model IEnumerable<CashRecipientVM> @using (Html.BeginForm()) { <div>
Ce code crée un formulaire avec une liste d'objets CashRecipientVM. L'assistant BeginCollectionItem est utilisé pour afficher une vue partielle pour chaque objet de la liste.
Le formulaire comprend un bouton "Ajouter" qui permet à l'utilisateur d'ajouter des instances supplémentaires du modèle. Lorsque le bouton "Ajouter" est cliqué, une requête AJAX est faite au contrôleur pour récupérer une autre vue partielle. La vue partielle récupérée est ensuite ajoutée au formulaire.
Lorsque le formulaire est soumis, les données saisies dans les champs du formulaire seront liées aux propriétés correspondantes des objets CashRecipientVM. Le contrôleur peut alors traiter ces objets et les enregistrer dans la base de données.
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!