Rumah > pembangunan bahagian belakang > C++ > Mengapa Pengikat Model MVC Saya Gagal Mengisi Senarai Objek daripada Borang?

Mengapa Pengikat Model MVC Saya Gagal Mengisi Senarai Objek daripada Borang?

Patricia Arquette
Lepaskan: 2025-01-21 14:27:11
asal
126 orang telah melayarinya

Why is My MVC Model Binder Failing to Populate a List of Objects from a Form?

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

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:

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

  2. 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).

  3. Pindahkan Kandungan Paparan Separa: Alihkan kandungan HTML daripada paparan separa asal anda ke dalam Templat Editor yang baru dibuat ini.

  4. 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>
Salin selepas log masuk

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!

sumber:php.cn
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