Aracılığıyla paylaş


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 Searchve 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=MySearchTermbir 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.