Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Érték | |
|---|---|
| Szabályazonosító | MVC1004 |
| A javítás törést okoz vagy nem okoz törést | Rendkívüli hírek |
Oka
A modellhez kötött paraméterek neve megegyezik az egyik tulajdonságával.
Szabály leírása
Az azonos nevű tulajdonsággal rendelkező összetett paraméter modellezése váratlan kötési viselkedést eredményezhet. Fontolja meg a paraméter átnevezését, vagy egy kötési attribútum használatával adjon meg egy másik nevet.
Vegye figyelembe a következő kódot:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
Ebben a modellben a paraméter és a tulajdonság neve is el van nevezveSearch, ami azt eredményezi, hogy a modellkötés megkísérli a tulajdonság kötését.search.Search Ha egy paraméternek és annak tulajdonságának ugyanaz a neve, az megakadályozza, hogy előtag nélkül lehessen kötni egy értékhez, például egy olyan lekérdezésben, mint amilyen a ?search=MySearchTerm.
Szabálysértések kijavítása
- Nevezze át a paramétert, ha az előtagját nem használja a kötés során:
public IActionResult Get(SearchModel model)
{
...
}
Egy paraméter átnevezése nyilvános típuson kompatibilitástörő változásnak tekinthető, mivel megváltoztatja a tár nyilvános API-felületét.
- Ha ez problémás, fontolja meg egy modellkötési attribútum használatát, például
Binda modellkötés előtagjának megadását:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Mikor kell letiltani a figyelmeztetéseket?
A figyelmeztetések mellőzhetők, ha a paraméternevet előtagként szeretné használni a modellkötés során.