Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Valore | |
|---|---|
| ID della regola | MVC1004 |
| La modifica è dirompente o non dirompente | Ultime notizie |
Causa
Un parametro associato al modello ha lo stesso nome di una delle relative proprietà.
Descrizione della regola
L'associazione di un parametro complesso con una proprietà con lo stesso nome può comportare un comportamento di associazione imprevisto. Prendere in considerazione la ridenominazione del parametro o l'uso di un attributo di associazione per specificare un nome diverso.
Osservare il codice seguente:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
In questo modello, il parametro e la relativa proprietà sono entrambi denominati Search, che comportano il tentativo di associazione del modello di associare la proprietà come search.Search. Attribuire lo stesso nome a un parametro e alla sua proprietà impedisce l'associazione a un valore senza l'uso di un prefisso, come ad esempio in una query simile a ?search=MySearchTerm.
Come correggere le violazioni
- Rinominare il parametro se il prefisso non viene usato durante l'associazione:
public IActionResult Get(SearchModel model)
{
...
}
La ridenominazione di un parametro in un tipo pubblico può essere considerata una modifica che causa un'interruzione perché modifica la superficie dell'API pubblica di una libreria.
- In caso di problemi, è consigliabile usare un attributo di associazione di modelli,
Bindad esempio per specificare il prefisso di associazione del modello:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Quando eliminare gli avvisi
Gli avvisi possono essere eliminati se si intende usare il nome del parametro come prefisso durante l'associazione di modelli.