Rumah >pembangunan bahagian belakang >C++ >Mengapakah ASP.NET MVC $.post Panggilan ke jqGrid saya Mengembalikan Nilai Tidak Ditakrifkan dalam Dropdown?

Mengapakah ASP.NET MVC $.post Panggilan ke jqGrid saya Mengembalikan Nilai Tidak Ditakrifkan dalam Dropdown?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 08:49:43996semak imbas

Why is my ASP.NET MVC $.post Call to jqGrid Returning an Undefined Value in the Dropdown?

Menyelesaikan masalah ASP.NET MVC dan jqGrid Dropdown Populasi Isu

Masalahnya: Nilai "undefined" yang tidak dijangka muncul dalam lungsur jqGrid apabila diisi secara dinamik menggunakan panggilan $.ajax() ASP.NET MVC 2. Ini berpunca daripada data yang tidak diformatkan dengan betul yang dikembalikan ke grid. JqGrid menjangkakan format khusus untuk nilai lungsur turun, seperti: "FE:FedEx; IN:InTime; TN:TNT". Menggunakan StringBuilder untuk pemformatan data menghasilkan petikan tambahan dan koma bertitik di belakang.

Analisis: Pendekatan awal menggunakan ContentResult(sb.ToString()) untuk mengembalikan data. Walaupun berfungsi, ia kurang cekap dan terdedah kepada ralat pemformatan.

Penyelesaian: Memanfaatkan ciri dataUrl dan buildSelect jqGrid dalam editoptions atau searchoptions menawarkan penyelesaian yang lebih bersih, lebih mantap. Ini menghapuskan pemformatan rentetan manual. dataUrl menentukan sumber data dan buildSelect mengendalikan pemformatan.

Contoh menggunakan dataUrl dan buildSelect:

<code class="language-javascript">{ 
    name: 'destinations', 
    editable: true, 
    edittype: 'select',
    editoptions: { 
        dataUrl: '<%= Url.Action("GetDestinationList", "Home") %>',
        buildSelect: function(response) {
            var s = '';
            if (response && response.length) {
                for (var i = 0; i < response.length; i++) {
                    s += response[i] + ';'; //Note the semicolon placement
                }
            }
            return s; // Removed trailing ""
        }
    }
}</code>

Pertimbangan Kaedah HTTP:

Jika permintaan POST diutamakan daripada GET untuk dataUrl, gantikan Json(allDestinations, JsonRequestBehavior.AllowGet) dengan Json(allDestinations) pada bahagian pelayan dan tambahkan ajaxSelectOptions: { type: "POST" } pada pilihan jqGrid.

Dioptimumkan buildSelect Fungsi:

Fungsi buildSelect yang disediakan boleh dioptimumkan sedikit untuk kejelasan dan kecekapan (walaupun fungsinya serupa dengan yang asal):

<code class="language-javascript">buildSelect: function(response) {
    return (response && response.length) ? response.join(';') : '';
}</code>

Pendekatan yang disemak ini menyediakan kaedah yang lebih mudah diselenggara dan kurang ralat untuk mengisi menu lungsur jqGrid.

Atas ialah kandungan terperinci Mengapakah ASP.NET MVC $.post Panggilan ke jqGrid saya Mengembalikan Nilai Tidak Ditakrifkan dalam Dropdown?. 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