Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Wartość | |
|---|---|
| Identyfikator reguły | MVC1004 |
| Poprawka jest przełomowa lub nieprzełomowa | Kluczowa |
Przyczyna
Parametr powiązany modelu ma taką samą nazwę jak jedna z jego właściwości.
Opis reguły
Powiązanie modelu złożonego parametru z właściwością o tej samej nazwie może spowodować nieoczekiwane zachowanie powiązania. Rozważ zmianę nazwy parametru lub użycie atrybutu powiązania w celu określenia innej nazwy.
Spójrzmy na poniższy kod:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
W tym modelu parametr i jego właściwość mają nazwę Search, co powoduje, że powiązanie modelu próbuje powiązać właściwość jako search.Search. Użycie tej samej nazwy dla parametru i jego właściwości uniemożliwia powiązanie z wartością bez prefiksu, jak w zapytaniu wyglądającym następująco: ?search=MySearchTerm.
Jak naprawić naruszenia
- Zmień nazwę parametru, jeśli jego prefiks nie jest używany podczas tworzenia powiązania:
public IActionResult Get(SearchModel model)
{
...
}
Zmiana nazwy parametru publicznego typu może być traktowana jako zmiana powodująca niezgodność, ponieważ zmienia publiczny interfejs API biblioteki.
- Jeśli jest to problematyczne, rozważ użycie atrybutu powiązania modelu, takiego jak
Binddo określenia prefiksu powiązania modelu.
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Kiedy pomijać ostrzeżenia
Ostrzeżenia można pominąć, jeśli zamierzasz użyć nazwy parametru jako prefiksu podczas tworzenia powiązania modelu.
ASP.NET Core