Heim >Backend-Entwicklung >C++ >Warum gibt meine ASP.NET MVC $.post-Anfrage unerwartet formatierte Zeichenfolgen für jqGrid-Dropdowns zurück?

Warum gibt meine ASP.NET MVC $.post-Anfrage unerwartet formatierte Zeichenfolgen für jqGrid-Dropdowns zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-11 07:23:42429Durchsuche

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

Probleme bei der Zeichenfolgenformatierung mit ASP.NET MVC und dem jqGrid-Dropdown-Menü

Übersicht

Wenn Sie jqGrid verwenden, um das Dropdown-Menü für die Datenbearbeitung dynamisch zu füllen, werden zusätzliche „undefinierte“ Elemente im Dropdown-Menü angezeigt. Dieses Problem ist auf das Zeichenfolgenformat zurückzuführen, das zum Auffüllen der Dropdown-Menüwerte verwendet wird.

Problemanalyse

jqGrid erfordert, dass das Dropdown-Menüwertformat wie folgt lautet:

<code>value: "FE:FedEx; IN:InTime; TN:TNT"</code>

Der Code in der ASP.NET MVC-Aktion generiert jedoch die Zeichenfolge mithilfe von sb.ToString(), wodurch unnötige Anführungszeichen um den Wert eingefügt werden:

<code>value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""</code>

Lösung

Methode 1: dataUrl verwenden

Um dieses Problem zu lösen, wird empfohlen, das dataUrl-Attribut von editoptions oder searchoptions in jqGrid zu verwenden. Dadurch können Sie eine URL angeben, die Ergebnisse im gewünschten Format zurückgibt:

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

Im Controller sollte die GetDestinationList-Operation ein JSON-Array zurückgeben, das die Dropdown-Menüwerte enthält:

<code>public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>

Methode 2: Verwenden Sie die buildSelect-Funktion

Wenn dataUrl nicht verfügbar ist, können Sie die buildSelect-Funktion verwenden, um den Dropdown-Menüwert zu formatieren:

<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>

Diese Funktion empfängt die Antwortdaten vom Server und gibt eine Zeichenfolge im erforderlichen Format zurück.

Das obige ist der detaillierte Inhalt vonWarum gibt meine ASP.NET MVC $.post-Anfrage unerwartet formatierte Zeichenfolgen für jqGrid-Dropdowns zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn