MVC1004: Cambiar el nombre del parámetro enlazado al modelo
Valor | |
---|---|
Identificador de la regla | MVC1004 |
La corrección es problemática o no problemática | Problemático |
Causa
Un parámetro enlazado al modelo tiene el mismo nombre que una de sus propiedades.
Descripción de la regla
El enlace de modelos de un parámetro complejo con una propiedad que tiene el mismo nombre puede dar lugar a un comportamiento de enlace inesperado. Considere la posibilidad de cambiar el nombre del parámetro o usar un atributo de enlace para especificar un nombre diferente.
Observe el código siguiente:
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
En este modelo, el parámetro y su propiedad se denominan Search
, lo que da como resultado que el enlace de modelos intente enlazar la propiedad como search.Search
. Asignar el mismo nombre a un parámetro y su propiedad impide el enlace a un valor sin prefijo, como una consulta similar a ?search=MySearchTerm
.
Cómo corregir infracciones
- Cambie el nombre del parámetro si no se usa su prefijo durante el enlace:
public IActionResult Get(SearchModel model)
{
...
}
Cambiar el nombre de un parámetro en un tipo público podría considerarse un cambio importante, ya que cambia la superficie de la API pública de una biblioteca.
- Si esto es problemático, considere la posibilidad de usar un atributo de enlace de modelos, como
Bind
, para especificar el prefijo de enlace de modelos:
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Cuándo suprimir las advertencias
Las advertencias se pueden suprimir si piensa usar el nombre del parámetro como prefijo durante el enlace del modelo.