MVC1004: Model bağlı parametresini yeniden adlandırma
Değer | |
---|---|
Kural Kimliği | MVC1004 |
Hataya neden olan veya bozulmayan düzeltme | Yeni |
Neden
Model bağlı parametresi, özelliklerinden biriyle aynı ada sahiptir.
Kural açıklaması
Model, aynı ada sahip bir özelliğe sahip karmaşık bir parametreyi bağlama beklenmeyen bağlama davranışına neden olabilir. Parametresini yeniden adlandırmayı veya farklı bir ad belirtmek için bağlama özniteliğini kullanmayı göz önünde bulundurun.
Aşağıdaki kodu göz önünde bulundurun:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
Bu modelde hem parametresi hem de özelliği olarak adlandırılır Search
ve bu da özelliği olarak bağlamaya çalışan model bağlamasına neden olur search.Search
. Parametreyi ve özelliğini aynı şekilde adlandırmak, gibi ?search=MySearchTerm
bir sorgu gibi bir ön ek olmadan bir değere bağlanmayı engeller.
İhlalleri düzeltme
- Bağlama sırasında ön eki kullanılmıyorsa parametreyi yeniden adlandırın:
public IActionResult Get(SearchModel model)
{
...
}
Bir kitaplığın genel API yüzeyini değiştirdiğinden ortak türdeki bir parametrenin yeniden adlandırılması hataya neden olan bir değişiklik olarak kabul edilebilir.
- Bu sorun varsa, model bağlama ön ekini belirtmek için gibi
Bind
bir model bağlama özniteliği kullanmayı göz önünde bulundurun:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Uyarıların ne zaman bastırılması gerekiyor?
Model bağlama sırasında parametre adını ön ek olarak kullanmayı düşünüyorsanız uyarılar gizlenebilir.
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin