如何在绑定到我的模型之前拦截提交的表单输入并对其进行修改?例如,如果我想从所有文本中修剪空白。
我尝试过创建一个自定义模型绑定器,如下所示:
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);
}
}
但似乎没有调用。有没有更好的地方来修改输入值?
注意:我需要在绑定和验证之前修改该值。
答案 0 :(得分:1)
您确定使用了型号活页夹吗?例如。可以在Application_Start
:
ModelBinders.Binders.DefaultBinder = new MyVeryOwnModelBinder();
我已多次成功完成此操作,对POST的阵列应用重新索引操作。
我通过覆盖BindModel
方法进行了重新编制索引,在bindingContext.ValueProvider
字典中查找过帐的值。
应该可以编辑这个字典,以便在模型绑定之前修改POST的值。
答案 1 :(得分:0)
您是否在global.asax中注册了模型绑定器?