Menyelesaikan masalah Isu Mengikat Model MVC dengan Senarai Objek
Artikel ini menangani masalah biasa dalam aplikasi MVC: kegagalan pengikat model untuk mengisi senarai objek dengan betul daripada data borang. Gejalanya ialah senarai batal dalam tindakan pengawal, walaupun penyerahan borang kelihatan betul.
Punca Punca: Indeks Hilang
Isu teras terletak pada kekurangan pengindeksan dalam elemen bentuk. Tanpa indeks, pengikat model tidak boleh membezakan elemen individu dalam senarai. Sebagai contoh, pertimbangkan senario ini: borang pada mulanya mengandungi unsur tanpa pengecam unik.
<code><!-- Incorrect: Missing indices --></code>
Penyelesaian: Memanfaatkan Templat Editor
Penyelesaian melibatkan penggunaan EditorTemplates untuk menjana secara automatik elemen borang yang diindeks dengan betul. Ini menghapuskan pengindeksan manual dan memastikan pengikatan model yang betul.
Langkah Pelaksanaan:
Buat Folder EditorTemplates: Cipta folder baharu bernama "EditorTemplates" dalam folder Views anda. Folder ini sepatutnya berada dalam direktori yang sama dengan fail paparan anda yang lain.
Cipta Paparan yang Ditaip Kuat: Di dalam folder EditorTemplates, cipta fail paparan yang ditaip kuat yang namanya sepadan dengan kelas model anda (cth., PlanCompareViewModel.cshtml
).
Pindahkan Kandungan Paparan Separa: Alihkan kandungan HTML daripada paparan separa asal anda ke dalam Templat Editor yang baru dibuat ini.
Gunakan EditorForModel()
: Ubah suai paparan induk anda untuk menggunakan kaedah EditorForModel()
pembantu. Pembantu ini secara automatik akan memaparkan elemen borang, diindeks dengan betul, berdasarkan model anda.
<code class="language-csharp">@model IEnumerable<plancompareviewmodel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @Html.EditorForModel() </div> }</code>
Dengan menggunakan pendekatan ini, pengikat model akan mentafsir dan mengisi senarai objek dengan betul dalam tindakan pengawal anda. Pembantu EditorForModel()
secara dinamik menjana indeks yang diperlukan untuk setiap elemen, menyelesaikan isu yang mengikat.
Atas ialah kandungan terperinci Mengapa Pengikat Model MVC Saya Gagal Mengisi Senarai Objek daripada Borang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!