Dans une application MVC, un formulaire contenant une liste d'objets ne soumet pas correctement la liste au contrôleur. Après soumission du formulaire, la liste des objets reçus par le contrôleur est vide.
Le problème vient de l'index manquant de l'élément de liste dans l'élément de formulaire. Le classeur de modèles nécessite des index pour distinguer les éléments de la liste.
Pour résoudre ce problème, utilisez des modèles au lieu de vues partielles.
1. Créer un modèle d'éditeur
Dans le dossier « EditorTemplates » sous le dossier d'affichage, créez un modèle d'éditeur nommé « PlanCompareViewModel.cshtml ». Placez le code suivant dans votre modèle :
<code>@model PlanCompareViewModel <div> @Html.HiddenFor(p => p.PlanID) @Html.HiddenFor(p => p.CurrentPlan) @Html.CheckBoxFor(p => p.ShouldCompare) </div></code>
2. Modifier la vue parent
Mettez à jour la vue parent comme suit :
<code>@model IEnumerable<plancompareviewmodel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @Html.EditorForModel() </div> }</code>
DisplayTemplates et EditorTemplates gèrent automatiquement l'indexation des collections, garantissant que le classeur de modèles crée la liste correcte d'objets.
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!