基于AOP思想的ModelBinder的应用

      在程序的开发阶段,当前台与后台交互时,需要对某些接收的参数做特殊处理。比如,前端将字符串以表单或者是ajax的方式传到后台,有可能用户在输入的时候多输了空格或者是没有输入值,这样就需要在后台对字符串进行统一处理,处理的方式是如果不为null,那么去掉字符串前后的空格,如果为null,那么就给该字符串赋一个空字符串。这就需要为程序中的每一个与前台交互的方法都做这样的处理,非常的麻烦。那么能不能有一种只处理一个位置,就可以影响其他所有的相关的相互方法呢。可以采用AOP的思想,即.net提供了一个DefaultModelBinder类,只要继承这个类,然后重写该类中的BindModel方法即可。代码如下:

基于AOP思想的ModelBinder的应用

基于AOP思想的ModelBinder的应用

        通过重写BindModel方法,即可解决上述问题。其大概工作原理是,当前端与后台发生交互(submit或ajax)时,MVC框架会首先调用BindModel方法,对所传的参数进行处理。处理完毕后,在调用方法,然后将参数传递给方法中的接收参数。在本示例中,只针对字符串类型的参数进行处理,也就是说,如果参数是字符串类型,那么会进入BindModel方法,如果不是则不进入,配置方式如下:

基于AOP思想的ModelBinder的应用