Dépannage ASP.NET MVC Form Form Wabred Soumission avec jQuery
Cet article résout un problème commun: soumettre un tableau de formulaire à l'aide d'ASP.NET MVC et JQuery, ce qui entraîne une exception de référence nul lors de la tentative d'accéder aux données de tableau dans le contrôleur. Le problème se pose généralement lorsque les éléments du tableau du formulaire ne sont pas correctement indexés pour la liaison du modèle correct.
Le scénario implique l'envoi d'un IEnumerable<BatchProductViewModel>
au serveur. La solution nécessite de générer des contrôles de formulaire dans une boucle, garantissant que chaque élément est correctement nommé à l'aide d'indexers. De plus, la propriété du modèle côté serveur (BatchProducts
) devrait être un IList<BatchProductViewModel>
pour s'adapter aux tailles de tableau dynamique.
Voici un exemple de code corrigé démontrant une bonne manipulation du tableau:
<code class="language-csharp">@using (Html.BeginForm("Save", "ConnectBatchProduct", FormMethod.Post)) { // ... other form elements ... // Correctly indexed form elements for the array // This loop ensures each element in the array has a unique index // The indexer is crucial for proper model binding for (int i = 0; i < Model.BatchProducts.Count; i++) { @Html.HiddenFor(model => model.BatchProducts[i].ProductId) // Example property @Html.TextBoxFor(model => model.BatchProducts[i].ProductName) // Example property // ... other properties for BatchProductViewModel ... } // ... rest of the form ... <input type="submit" value="Save" /> }</code>
Avec ces ajustements, la méthode d'action Save
dans le contrôleur ConnectBatchProduct
recevra correctement un objet ConnectBatchProductViewModel
peuplé, y compris sa liste BatchProducts
.
Gestion dynamique du tableau (ajouter / supprimer)
Pour l'addition dynamique et l'élimination des éléments BatchProductViewModel
à l'aide de jQuery, envisagez d'utiliser l'assistance BeginCollectionItem
ou de fabriquer un modèle HTML personnalisé pour gérer efficacement les éléments de tableau. (De plus amples détails sur ces techniques peuvent être trouvés dans [les ressources / liens en ligne pertinents - Remplacer les informations entre crochets par des liens réels si disponibles ].)
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!