Rumah pembangunan bahagian belakang C++ Mengapa borang MVC saya gagal menyiarkan senarai objek, menyebabkan senarai nol dalam pengawal?

Mengapa borang MVC saya gagal menyiarkan senarai objek, menyebabkan senarai nol dalam pengawal?

Jan 21, 2025 pm 02:36 PM

Why is my MVC form failing to post a list of objects, resulting in a null list in the controller?

Borang MVC tidak boleh menyerahkan senarai objek

Dalam aplikasi MVC, pengguna menghadapi masalah: borang yang mengandungi senarai objek tidak dapat menyerahkan data kepada pengawal, menyebabkan senarai kosong diluluskan. Borang menggunakan gelung dan pandangan separa untuk membuat item, tetapi selepas penyerahan pengawal menerima enum kosong.

Analisis Masalah

Untuk memahami sebab data tidak diserahkan dengan betul, mari kita periksa kod yang disediakan:

Pandangan ibu bapa:

@foreach (var planVM in Model)
{
    @Html.Partial("_partialView", planVM)
}
Salin selepas log masuk

Paparan Separa (_partialView):

@Html.HiddenFor(p => p.PlanID)
@Html.HiddenFor(p => p.CurrentPlan)
@Html.CheckBoxFor(p => p.ShouldCompare)
Salin selepas log masuk

Kelas PlanCompareViewModel:

public class PlansCompareViewModel
{
    public int PlanID { get; set; }
    public Plan CurrentPlan { get; set; }
    public bool ShouldCompare { get; set; }
}
Salin selepas log masuk

Penyelesaian

Punca masalah terletak pada cara unsur bentuk dinamakan. Tanpa indeks, pengikat model tidak dapat membezakan antara unsur-unsur senarai. Untuk membetulkannya, kita perlu menetapkan indeks yang betul kepada nama elemen borang:

Paparan separa yang dipertingkatkan (_partialView):

@for (int i = 0; i < Model.Count(); i++)
{
    @Html.HiddenFor(p => p[i].PlanID)
    @Html.HiddenFor(p => p[i].CurrentPlan)
    @Html.CheckBoxFor(p => p[i].ShouldCompare)
}
Salin selepas log masuk

Pengubahsuaian ini membolehkan pengikat model mengaitkan elemen data individu dengan item senarai yang betul.

Tingkatkan penjanaan borang menggunakan templat editor

Untuk menjadi lebih ringkas dan cekap, adalah disyorkan untuk menggunakan templat editor. Sebahagian daripada paparan boleh digantikan dengan kandungan berikut dengan mencipta PlanCompareViewModel.cshtml dalam folder EditorTemplates:

<div>
    @Html.HiddenFor(p => p.PlanID)
    @Html.HiddenFor(p => p.CurrentPlan)
    @Html.CheckBoxFor(p => p.ShouldCompare)
</div>
Salin selepas log masuk

Akhir sekali, paparan induk boleh dipermudahkan kepada:

@Html.EditorForModel()
Salin selepas log masuk

Templat editor secara automatik mengendalikan pengindeksan untuk memastikan elemen borang dinamakan dengan betul untuk pengikatan model.

Atas ialah kandungan terperinci Mengapa borang MVC saya gagal menyiarkan senarai objek, menyebabkan senarai nol dalam pengawal?. 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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gulc: Perpustakaan C dibina dari awal Gulc: Perpustakaan C dibina dari awal Mar 03, 2025 pm 05:46 PM

Gulc: Perpustakaan C dibina dari awal

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Mar 03, 2025 pm 05:52 PM

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Mar 03, 2025 pm 05:53 PM

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Mar 03, 2025 pm 05:53 PM

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza Penggunaan dan perkongsian frasa yang berbeza Mar 03, 2025 pm 05:51 PM

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Mar 03, 2025 pm 05:51 PM

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Mar 12, 2025 pm 04:50 PM

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Mar 12, 2025 pm 04:52 PM

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?

See all articles