Sdílet prostřednictvím


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.