Existe-t-il un moyen d'éditer la Request.Form avant que la méthode d'action ne se lie aux paramètres? J'ai déjà un appel de réflexion pour permettre l'édition de Request.Form. Je ne peux pas trouver un point d'extensibilité où je peux le modifier avant que la liaison se produise. MISE À JOUR: Il semble donc que je modifiais Request.Form et que je ne m'en suis pas rendu compte. Je vérifiais en regardant les paramètres liés. Cela est incorrect b/c au moment où vous arrivez à l'ActionFilter les valeurs de formulaire ont déjà été copiées/définies sur/dans le ValueProvider. Ce que je crois est où les valeurs sont tirées pour la liaison. Donc, la question devient quelle est la meilleure façon d'appliquer un filtrage aux valeurs de formulaire avant qu'ils ne soient liés. Je veux toujours que la liaison se produise. Je veux juste éditer les valeurs qu'il utilise pour lier.Modifier une demande avant la liaison
1
A
Répondre
0
J'ai fini par étendre la méthode SetProperty sur la DefaultModelBinder pour vérifier la valeur avant de poursuivre le comportement de base. Si la valeur est une chaîne, j'effectue mon filtrage.
public class ScrubbingBinder : DefaultModelBinder
{
protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
{
if (value.GetType() == typeof(string))
value = HtmlScrubber.ScrubHtml(value as string, HtmlScrubber.SimpleFormatTags);
base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);
}
}
0
Créer un filtre personnalisé et passer outre OnActionExecuting()
:
public class CustomActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
Ou tout simplement passer outre OnActionExecuting()
dans votre contrôleur
MISE À JOUR:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var actionName = filterContext.ActionDescriptor.ActionName;
if(String.Compare(actionName, "Some", true) == 0 && Request.HttpMethod == "POST")
{
var form = filterContext.ActionParameters["form"] as FormCollection;
form.Add("New", "NewValue");
}
}
public ActionResult SomeAction(FormCollection form)
{
...
}
Questions connexes
- 1. Demande de journal avant de l'exécuter
- 2. UIActivityIndicatorView marche/arrêt avant et après la demande page web
- 3. Comment décrypter les paramètres d'application avant la liaison?
- 4. Où puis-je modifier la commande de liaison dans MSVC++?
- 5. Liaison d'un nouveau SoapClient à une adresse IP spécifique avant l'envoi d'une requête sortante
- 6. Grille Infragistics "à la demande" apparence
- 7. Puis-je modifier ou contrôler la couleur de la zone IFRAME avant le chargement du contenu?
- 8. La liaison WCF -wsHttpBinding utilise une session?
- 9. Avant Databinder.Eval
- 10. Modifier (par liaison de données) XML dans le formulaire ASP.NET
- 11. Cycle de vie de la demande Wcf
- 12. La méthode d'envoi MSXML2.XMLHTTP fonctionne avec une liaison anticipée, échoue avec une liaison tardive
- 13. Ruby on Rails - Puis-je modifier la valeur d'un attribut avant qu'il ne soit appelé?
- 14. WPF: Définir la propriété de liaison pour la liaison ListBox
- 15. Valider avant la post
- 16. Modifier la photo sélectionnée par UIImagePicker avant qu'elle ne soit utilisée dans l'écran de déplacement
- 17. Modélisation de la demande d'offre
- 18. Liaison de données à une chaîne chiffrée?
- 19. Réagir pour modifier une propriété statique
- 20. Modification du fichier avant la validation Subversion
- 21. Afficher ou masquer une barre de titre à la demande
- 22. Modifier la date dans WordPress
- 23. Modifier une longueur de colonne
- 24. Comment puis-je attraper les valeurs de contrôleur/d'action d'une demande avant expédition?
- 25. jQuery manquant; avant la déclaration
- 26. Comment modifier la structure du référentiel subversion après une migration?
- 27. Quitter la page avant la soumission d'un formulaire
- 28. Comment faire pour masquer une ligne avant la publication
- 29. Liaison à une variable membre
- 30. Comment faire une demande POST dans vb.net