MVC1004: Přejmenování vázaného parametru modelu
Hodnota | |
---|---|
ID pravidla | MVC1004 |
Oprava způsobující chybu nebo chybu způsobující chybu | Narušující |
Příčina
Parametr vázaný na model má stejný název jako jedna z jejích vlastností.
Popis pravidla
Vytvoření vazby komplexního parametru s vlastností se stejným názvem může vést k neočekávanému chování vazby. 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 jsou parametr a jeho vlastnost pojmenovány Search
, což vede k vytvoření vazby modelu pokus o vytvoření vazby vlastnosti 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
Bind
k 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.