Si j'ai un contrôleur:Mapper des données HttpPost pour modéliser dans MVC - Comment capturer des données avec "-" dans le nom?
[HttpPost]
public ReturnType ControllerMethod(CustomModel c)
{
...
}
Un tiers est l'affichage des données sur cette méthode:
abc-xyz=testdata
Une façon, serait d'utiliser:
Request.Params["abc-xyz"]
Cependant, le cas où la demande pourrait contenir du code malveillant, si un paramètre de demande contenait du code problématique, IIS lançait un HttpRequestValidationException
dès que le Request.Params[""]
est appelé.
Maintenant, plutôt que de désactiver cette validation partout, je voudrais mapper les données publiées à mon modèle. De cette façon, si le "code potentiellement malveillant" est contenu dans un paramètre qui n'est pas "abc-xyz", mon application ne lancera pas un HttpRequestValidationException
. Il vérifiera cependant les paramètres utilisés et lancera un HttpRequestValidationException
si les données accédées sont potentiellement malveillantes.
Comment faire cela si les données affichées ont un tiret/tiret dans le nom?
J'ai essayé quelques variantes dont:
public class CustomModel
{
[Required]
public string abc_xyz
}
Merci pour la réponse. J'ai trouvé quelques articles sur l'écriture de ModelBinder personnalisé. Cependant, ils semblent tous être des morceaux de code assez gros qui compliquent ma base de code. Je suppose que je m'attendais à une simple annotation pour faire le travail Ie: [Mapping ("abc-xyz")]. – dazbradbury
il n'y a pas un de la boîte. C'est le modèle de responsabilité liant. –
OK, merci. J'ai créé un classeur de modèle personnalisé, mais lorsque j'essaie d'accéder aux paramètres de la requête, il lance une exception HttpRequestValidationException. Le ModelBinder intégré ne lance pas cette exception. – dazbradbury