Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Valeur | |
|---|---|
| Identificateur de la règle | MVC1004 |
| Le correctif est cassant ou non cassant | Rupture |
La 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 autre nom.
Considérez 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é portent tous deux le nom Search, ce qui fait que la liaison du modèle tente de lier la propriété sous search.Search. Nommer un paramètre et sa propriété de la même manière empêche de lier une valeur sans préfixe, comme dans 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)
{
...
}
Le changement de nom d’un paramètre sur un type public peut être considéré comme un changement cassant, car il modifie l’aire d’API publique d’une bibliothèque.
- Si cela pose problème, envisagez d’utiliser un attribut de liaison de modèle, par
Bindexemple 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 envisagez d’utiliser le nom du paramètre comme préfixe pendant la liaison de modèle.