Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Hodnota | |
|---|---|
| Identifikátor pravidla | MVC1004 |
| Oprava je destruktivní nebo nedestruktivní | Žhavá novinka |
Příčina
Parametr vázaný na model má stejný název jako jedna z jejích vlastností.
Popis pravidla
Vázání modelu komplexního parametru s vlastností, která má stejný název, může vést k neočekávanému chování při vázání. Zvažte přejmenování parametru nebo použití atributu vazby k zadání jiného názvu.
Vezměte v úvahu následující kód:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
V tomto modelu se parametr a jeho vlastnost jmenují Search, což způsobuje, že se vazba modelu snaží propojit vlastnost jako search.Search. Pojmenování parametru a jeho vlastnosti stejným způsobem zabraňuje vazbě na hodnotu bez předpony, jako je například dotaz, který vypadá jako ?search=MySearchTerm.
Jak opravit porušení
- Přejmenujte parametr, pokud se během vazby nepoužívá jeho předpona:
public IActionResult Get(SearchModel model)
{
...
}
Přejmenování parametru na veřejném typu může být považováno za zásadní změnu, protože mění veřejnou plochu rozhraní API knihovny.
- Pokud je to problematické, zvažte použití atributu vazby modelu, například
Bindk určení předpony vazby modelu:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Kdy potlačit upozornění
Upozornění je možné potlačit, pokud máte v úmyslu použít název parametru jako předponu během vazby modelu.