Comment puis-je intercepter une entrée de formulaire soumise et la modifier avant qu'elle ne soit liée à mon modèle? Par exemple, si je voulais couper les espaces de tout le texte.Comment puis-je modifier l'entrée avant la liaison du modèle dans asp.net mvc?
J'ai essayé de créer un liant modèle personnalisé comme ceci:
public class CustomBinder : DefaultModelBinder {
protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value) {
string newValue = ((string)value).Trim(); //example code to create new value but could be anything
base.SetProperty(controllerContext, bindingContext, propertyDescriptor, newValue);
}
}
mais cela ne semble pas être invoqué. Y a-t-il un meilleur endroit pour modifier la valeur d'entrée?
Remarque: J'ai besoin de modifier la valeur avant qu'elle ne soit liée et validée.
Si je remplace 'BindModel' alors je peux voir mon CustomBinder est invoqué par le débogueur mais quand je viens de surcharger 'GetProperty' ce n'est pas le cas. –
Arghhh! J'enregistrais mon classeur modèle contre le type de propriété en utilisant 'ModelBinders.Binders.Add()' et non comme le classeur modèle par défaut. Utiliser 'ModelBinders.Binders.DefaultBinder = new CustomBinder();' appelle 'SetPoperty' comme prévu. –