Maison > développement back-end > C++ > Pourquoi ma requête ASP.NET MVC $.post renvoie-t-elle des chaînes formatées de manière inattendue pour les listes déroulantes jqGrid ?

Pourquoi ma requête ASP.NET MVC $.post renvoie-t-elle des chaînes formatées de manière inattendue pour les listes déroulantes jqGrid ?

Mary-Kate Olsen
Libérer: 2025-01-11 07:23:42
original
426 Les gens l'ont consulté

Why Does My ASP.NET MVC $.post Request Return Unexpectedly Formatted Strings for jqGrid Dropdowns?

Problèmes de formatage de chaîne avec le menu déroulant ASP.NET MVC et jqGrid

Aperçu

Lorsque vous utilisez jqGrid pour remplir dynamiquement le menu déroulant pour l'édition des données, des éléments supplémentaires « non définis » apparaîtront dans le menu déroulant. Ce problème provient du format de chaîne utilisé pour renseigner les valeurs du menu déroulant.

Analyse du problème

jqGrid requiert que le format de valeur du menu déroulant soit le suivant :

<code>value: "FE:FedEx; IN:InTime; TN:TNT"</code>
Copier après la connexion

Cependant, le code de l'action ASP.NET MVC génère la chaîne à l'aide de sb.ToString(), ce qui ajoute des guillemets inutiles autour de la valeur :

<code>value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""</code>
Copier après la connexion

Solution

Méthode 1 : Utiliser dataUrl

Afin de résoudre ce problème, il est recommandé d'utiliser l'attribut dataUrl de editoptions ou searchoptions dans jqGrid. Cela vous permet de spécifier une URL qui renvoie les résultats au format souhaité :

<code>{ name: 'destinations', ditable: true, edittype:'select',
  editoptions: { dataUrl:'<%= Url.Action("GetDestinationList","Home") %>' }
}</code>
Copier après la connexion

Dans le contrôleur, l'opération GetDestinationList doit renvoyer un tableau JSON contenant les valeurs du menu déroulant :

<code>public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>
Copier après la connexion

Méthode 2 : Utiliser la fonction buildSelect

Si dataUrl n'est pas disponible, vous pouvez utiliser la fonction buildSelect pour formater la valeur du menu déroulant :

<code class="language-javascript">                 buildSelect: function(data) {
                     var s = '';
                     if (response && response.length) {
                         for (var i = 0, l=response.length; i<l ; i++) {
                             var ri = response[i];
                             s += ''+ri+'';
                         }
                     }
                     return s + "";
                 }</code>
Copier après la connexion

Cette fonction reçoit les données de réponse du serveur et renvoie une chaîne au format requis.

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!

source:php.cn
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