2009-12-18 2 views
0

Le fait est que tous mes identifiants sont cryptés et j'ai 2 méthodes qui analysent l'ID de long en Encrypted (quelque chose comme A8sdf = dsfs =) et retour donc je dois faire cette conversion dans chaque méthode d'action quand j'envoie ou reçoit un EncryptedId
asp.net mvc: modifier une valeur qui vient de la vue avant qu'elle n'atteigne la méthode d'action

Est-il possible de modifier la valeur pour un type spécifique ou un nom de propriété avant qu'il n'atteigne la méthode d'action?

Répondre

1

Vous pouvez écrire un model binder qui décrypter la valeur:

public class MyModelBinder : DefaultModelBinder 
{ 
    protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value) 
    { 
     // Test if it is the Id property 
     if (propertyDescriptor.Name == "Id") 
     { 
      // Remark: MyDecryptFunction must return the same type 
      value = MyDecryptFunction(value); 
     } 
     base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value); 
    } 

} 
+0

pourriez-vous me montrer quelle méthode dois-je remplacer et comment modifier la valeur d'un type ou d'un bien spécifique en utilisant l'ModelBinder? – Omu

+1

La méthode 'SetProperty' semble appropriée ici. –

+0

Puis-je utiliser ModelBinder pour modifier la valeur qui va à la vue? – Omu

Questions connexes