MVC1004: Umbenennen des modellgebundenen Parameters
Wert | |
---|---|
Regel-ID | MVC1004 |
Fix führt oder führt nicht zur Unterbrechung | Breaking |
Ursache
Ein modellgebundener Parameter hat den gleichen Namen wie eine seiner Eigenschaften.
Regelbeschreibung
Die Modellbindung eines komplexen Parameters mit einer Eigenschaft mit demselben Namen kann zu unerwartetem Bindungsverhalten führen. Erwägen Sie, den Parameter umzubenennen oder ein Bindungsattribut zu verwenden, um einen anderen Namen anzugeben.
Betrachten Sie folgenden Code:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
In diesem Modell haben der Parameter und seine Eigenschaft den Namen Search
, was dazu führt, dass die Modellbindung versucht, die Eigenschaft als search.Search
zu binden. Wenn Sie einen Parameter und seine Eigenschaft gleich benennen, wird die Bindung an einen Wert ohne Präfix verhindert, z. B. eine Abfrage, die wie ?search=MySearchTerm
folgt aussieht.
Behandeln von Verstößen
- Benennen Sie den Parameter um, wenn sein Präfix während der Bindung nicht verwendet wird:
public IActionResult Get(SearchModel model)
{
...
}
Das Umbenennen eines Parameters für einen öffentlichen Typ kann als Breaking Change angesehen werden, da dadurch die öffentliche API-Oberfläche einer Bibliothek geändert wird.
- Wenn dies problematisch ist, sollten Sie ein Modellbindungsattribut verwenden, z. B.
Bind
zum Angeben des Modellbindungspräfixes:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Wann sollten Warnungen unterdrückt werden?
Warnungen können unterdrückt werden, wenn Sie den Parameternamen während der Modellbindung als Präfix verwenden möchten.