Rumah >pembangunan bahagian belakang >C++ >Mengapa Permintaan ASP.NET MVC $.post Saya Mengembalikan Rentetan Diformat Secara Tidak Dijangka untuk Dropdown jqGrid?

Mengapa Permintaan ASP.NET MVC $.post Saya Mengembalikan Rentetan Diformat Secara Tidak Dijangka untuk Dropdown jqGrid?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-11 07:23:42433semak imbas

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

Isu pemformatan rentetan dengan menu lungsur turun ASP.NET MVC dan jqGrid

Ikhtisar

Apabila menggunakan jqGrid untuk mengisi menu lungsur turun secara dinamik untuk pengeditan data, item "tidak ditentukan" tambahan akan muncul dalam menu lungsur. Isu ini berpunca daripada format rentetan yang digunakan untuk mengisi nilai menu lungsur turun.

Analisis Masalah

jqGrid memerlukan format nilai menu lungsur adalah seperti berikut:

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

Walau bagaimanapun, kod dalam tindakan ASP.NET MVC menjana rentetan menggunakan sb.ToString(), yang menambah petikan yang tidak perlu di sekitar nilai:

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

Penyelesaian

Kaedah 1: Gunakan dataUrl

Untuk menyelesaikan masalah ini, adalah disyorkan untuk menggunakan atribut dataUrl bagi pilihan edit atau pilihan carian dalam jqGrid. Ini membolehkan anda menentukan URL yang mengembalikan hasil dalam format yang diingini:

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

Dalam pengawal, operasi GetDestinationList harus mengembalikan tatasusunan JSON yang mengandungi nilai menu lungsur:

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

Kaedah 2: Gunakan fungsi buildSelect

Jika dataUrl tidak tersedia, anda boleh menggunakan fungsi buildSelect untuk memformat nilai menu lungsur:

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

Fungsi ini menerima data tindak balas daripada pelayan dan mengembalikan rentetan dalam format yang diperlukan.

Atas ialah kandungan terperinci Mengapa Permintaan ASP.NET MVC $.post Saya Mengembalikan Rentetan Diformat Secara Tidak Dijangka untuk Dropdown jqGrid?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn