MVC1004. Переименование связанного параметра модели
Значение | |
---|---|
Идентификатор правила | MVC1004 |
Исправление является критическим или не критическим | Критическое |
Причина
Параметр привязки модели имеет то же имя, что и одно из его свойств.
Описание правила
Привязка сложного параметра модели к свойству с тем же именем может привести к непредвиденному поведению привязки. Рекомендуется переименовать параметр или использовать атрибут привязки, чтобы указать другое имя.
Рассмотрим следующий код:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
В этой модели параметр и его свойство именуются Search
, что приводит к попытке привязки модели привязать свойство как search.Search
. Именование параметра и его свойства предотвращает привязку к значению без префикса, например запроса, который выглядит следующим ?search=MySearchTerm
образом.
Устранение нарушений
- Переименуйте параметр, если его префикс не используется во время привязки:
public IActionResult Get(SearchModel model)
{
...
}
Переименование параметра в общедоступном типе может рассматриваться как критическое изменение, так как оно изменяет область общедоступного API библиотеки.
- Если это проблематично, попробуйте использовать атрибут привязки модели, например
Bind
указать префикс привязки модели:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Когда лучше отключить предупреждения
Предупреждения можно отключить, если вы планируете использовать имя параметра в качестве префикса во время привязки модели.
ASP.NET Core