如何在c#MVC中通过Model修剪()所有输入

Eri*_*Yin 10 c# asp.net asp.net-mvc asp.net-mvc-3

我发现Model传递的所有值都没有在ASP.net MVC3中修剪

有办法:

  1. 在Model中的每个字段上应用trim()(至少所有字符串字段;但所有表单字段在由Model处理之前都是字符串,因此更好地修剪它们)
  2. 必须在之前ModelState.IsValid()(因为我经常发现代码很奇怪ModelState.IsValid,后来发现因为表单项没有被修剪.)

谢谢.

小智 11

您必须创建一个自定义模型绑定器来修剪任何作为字符串的模型属性.

参考:
在ASP.NET MVC中使用IModelBinder进行自定义模型绑定在ASP.NET MVC
模型Binder上进行迭代
6 ASP.NET MVC模型绑定提示
更好的模型绑定器

基本上,您可以采用以下两种方法之一:

  1. 实现IModelBinder接口
  2. DefaultModelBinder类进行子类化

public class StringTrimmingBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        // trim your string here and act accordingly

        // in the case the model property isn't a string
        return base.BindModel(controllerContext, bindingContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对我之后的每个人:记得把它放在`Global.asax``Application_Start()``ModelBinders.Binders.DefaultBinder = new whatsoeverbinder();` (5认同)