如何在asp.net mvc中进行模型绑定之前修改输入?

时间:2010-05-20 10:30:45

标签: asp.net-mvc

如何在绑定到我的模型之前拦截提交的表单输入并对其进行修改?例如,如果我想从所有文本中修剪空白。

我尝试过创建一个自定义模型绑定器,如下所示:

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);
  }

}

但似乎没有调用。有没有更好的地方来修改输入值?

注意:我需要在绑定和验证之前修改该值。

2 个答案:

答案 0 :(得分:1)

您确定使用了型号活页夹吗?例如。可以在Application_Start

中执行此操作来替换默认模型绑定器
ModelBinders.Binders.DefaultBinder = new MyVeryOwnModelBinder();

我已多次成功完成此操作,对POST的阵列应用重新索引操作。

我通过覆盖BindModel方法进行了重新编制索引,在bindingContext.ValueProvider字典中查找过帐的值。

应该可以编辑这个字典,以便在模型绑定之前修改POST的值。

答案 1 :(得分:0)

您是否在global.asax中注册了模型绑定器?