Rumah >pembangunan bahagian belakang >C++ >Bagaimana Berkesan Mengendalikan Model Binding dengan Senarai dalam ASP.NET MVC 4?

Bagaimana Berkesan Mengendalikan Model Binding dengan Senarai dalam ASP.NET MVC 4?

Susan Sarandon
Susan Sarandonasal
2025-01-03 09:32:39729semak imbas

How to Effectively Handle Model Binding with Lists in ASP.NET MVC 4?

Model Mengikat kepada Senarai dalam MVC 4

Apabila cuba untuk mengikat ILlist item pada paparan, isu boleh timbul dengan kaedah HttpPost. Walaupun sumber berguna seperti artikel Phil Haack wujud, ia mungkin tidak menggambarkan kemungkinan kemas kini dalam MVC 4. Untuk menangani perkara ini, mari kita terokai penyelesaian terperinci.

Konfigurasi ViewModel

public class MyViewModel
{
   public List<Person> Persons{get;set;}
}

Lihat Pelaksanaan

@model MyViewModel

@for( int i = 0; i < Model.Persons.Count(); ++i)
{
    @Html.HiddenFor(m => m.Persons[i].PersonId)
    @Html.EditorFor(m => m.Persons[i].FirstName) 
    @Html.EditorFor(m => m.Persons[i].LastName)         
}

Tindakan Kaedah

[HttpPost]public ViewResult(MyViewModel vm)
{
...
}

Pertimbangan

Perhatikan bahawa hanya sifat dengan medan input akan mempunyai nilai selepas pos balik. Selain itu, pengikatan model MVC机制 hanya mengenali ID berturut-turut. Pertimbangkan contoh ini apabila item disembunyikan secara bersyarat:

@for( int i = 0; i < Model.Persons.Count(); ++i)
{
    if(i != 4)//conditionally hide 5th item, 
    { //but BUG occurs on postback, all items after 5th will not be bound to the the list
      @Html.HiddenFor(m => m.Persons[i].PersonId)
      @Html.EditorFor(m => m.Persons[i].FirstName) 
      @Html.EditorFor(m => m.Persons[i].LastName)           
    }
}

Dalam kes ini, hanya empat item pertama akan diikat pada pos belakang. Untuk mengelakkan perkara ini, pastikan ID berturut-turut untuk semua item dalam IList.

Atas ialah kandungan terperinci Bagaimana Berkesan Mengendalikan Model Binding dengan Senarai dalam ASP.NET MVC 4?. 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