MVC1004 : Renommer le paramètre lié au modèle
Value | |
---|---|
Identificateur de la règle | MVC1004 |
Le correctif est cassant ou non cassant | Rupture |
Cause
Un paramètre lié au modèle porte le même nom que l'une de ses propriétés.
Description de la règle
La liaison de modèle d'un paramètre complexe avec une propriété portant le même nom peut entraîner un comportement de liaison inattendu. Envisagez de renommer le paramètre ou d'utiliser un attribut de liaison pour spécifier un nom différent.
Prenez le code suivant :
public class HomeController : Controller
{
public IActionResult Get(SearchModel search)
{
...
}
}
public class SearcModel
{
public string Search { get; set; }
}
Dans ce modèle, le paramètre et sa propriété sont tous deux nommés Search
, ce qui entraîne la liaison de modèle qui tente de lier la propriété en tant que search.Search
. Le fait de nommer un paramètre et sa propriété de la même façon empêche la liaison à une valeur sans préfixe tel qu’une requête qui ressemble à ?search=MySearchTerm
.
Comment corriger les violations
- Renommez le paramètre si son préfixe n’est pas utilisé pendant la liaison :
public IActionResult Get(SearchModel model)
{
...
}
Renommer un paramètre d'un type public peut être considéré comme un changement radical puisqu'il modifie la surface de l'API publique d'une bibliothèque.
- Si cela pose problème, envisagez d'utiliser un attribut de liaison de modèle tel que
Bind
pour spécifier le préfixe de liaison de modèle :
public IActionResult Get([Bind(Prefix = "")] SearchModel search)
{
...
}
Quand supprimer les avertissements
Les avertissements peuvent être supprimés si vous avez l'intention d'utiliser le nom du paramètre comme préfixe lors de la liaison du modèle.