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.
ASP.NET Core