MVC1004: Rinominare il parametro associato al modello

Valore
ID regola MVC1004
Correzione che causa un'interruzione o un'interruzione Interruzione

Causa

Un parametro associato al modello ha lo stesso nome di una delle relative proprietà.

Descrizione 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. La denominazione di un parametro e della relativa proprietà impedisce l'associazione a un valore senza prefisso, ad esempio una query simile ?search=MySearchTerma .

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, Bind ad 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.