Bagikan melalui


MVC1004: Ganti nama parameter terikat model

Nilai
ID Aturan MVC1004
Perbaikan bersifat disruptif atau non-disruptif Merusak

Penyebab

Parameter terikat model memiliki nama yang sama dengan salah satu propertinya.

Deskripsi aturan

Model yang mengikat parameter kompleks dengan properti yang memiliki nama yang sama dapat mengakibatkan perilaku pengikatan yang tidak terduga. Pertimbangkan untuk mengganti nama parameter, atau menggunakan atribut pengikatan untuk menentukan nama yang berbeda.

Pertimbangkan gambar berikut:

public class HomeController : Controller
{
    public IActionResult Get(SearchModel search)
    {
        ...
    }
}

public class SearcModel
{
    public string Search { get; set; }
}

Dalam model ini, parameter dan propertinya keduanya bernama Search, yang menghasilkan pengikatan model yang mencoba mengikat properti sebagai search.Search. Penamaan parameter dan propertinya sama mencegah pengikatan ke nilai tanpa awalan seperti kueri yang terlihat seperti ?search=MySearchTerm.

Cara memperbaiki pelanggaran

  • Ganti nama parameter jika awalannya tidak digunakan selama pengikatan:
public IActionResult Get(SearchModel model)
{
    ...
}

Mengganti nama parameter pada jenis publik dapat dianggap sebagai perubahan yang melanggar karena mengubah permukaan API publik pustaka.

  • Jika ini bermasalah, pertimbangkan untuk menggunakan atribut pengikatan model seperti Bind untuk menentukan awalan pengikatan model:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
    ...
}

Kapan harus menekan peringatan

Peringatan dapat ditekan jika Anda ingin menggunakan nama parameter sebagai awalan selama pengikatan model.