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
Lepaskan: 2025-01-11 08:49:43
asal
1021 orang telah melayarinya

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:

{ 
    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 ""
        }
    }
}
Salin selepas log masuk

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

buildSelect: function(response) {
    return (response && response.length) ? response.join(';') : '';
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan