Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Value | |
|---|---|
| ID da regra | MVC1004 |
| Correção é disruptiva ou não disruptiva | Quebra |
Motivo
Um parâmetro associado ao modelo tem o mesmo nome de uma de suas propriedades.
Descrição da regra
A associação de modelo a um parâmetro complexo com uma propriedade com o mesmo nome pode resultar em um comportamento de associação inesperado. Considere renomear o parâmetro ou usar um atributo de associação para especificar um nome diferente.
Considere o seguinte código:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
Nesse modelo, o parâmetro e sua propriedade são nomeados Search, o que resulta em uma associação de modelo tentando associar a propriedade como search.Search. Nomear um parâmetro e sua propriedade da mesma forma impede a associação a um valor sem um prefixo, como em uma consulta que se pareça com ?search=MySearchTerm.
Como corrigir violações
- Renomeie o parâmetro se seu prefixo não for usado durante a associação:
public IActionResult Get(SearchModel model)
{
...
}
Renomear um parâmetro em um tipo público pode ser considerado uma alteração significativa, pois altera a superfície da API pública de uma biblioteca.
- Se isso for problemático, considere usar um atributo de associação de modelo, como
Bindespecificar o prefixo de associação de modelo:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Quando suprimir avisos
Os avisos poderão ser suprimidos se você pretende usar o nome do parâmetro como um prefixo durante a associação de modelo.