使用asp.net中的regex属性验证所有输入

时间:2018-02-16 14:03:49

标签: asp.net asp.net-mvc

我需要验证我的asp.net页面上的所有输入都不允许下一个字符:

> < ? // \ &安培;

如何在不向每个字段添加[RegularExpression ...]的情况下,同时向我的应用的所有输入添加规则?

我的整个应用都有超过500个字段。这是一个充满形式的应用程序。

1 个答案:

答案 0 :(得分:1)

如果我必须解决这样的问题,我可能会创建一个可以验证该字段的ModelBinder。此代码未经过测试,但应该在某处接近。

public class DangerousCharacterModelBinder : DefaultModelBinder
{
    public override  bool OnPropertyValidating(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value)
    {
        if(value is string)
        {
            bool valid = true;
            // Do your regex test here to change the valid flag

            if(!valid)
            {
                bindingContext.ModelState.AddModelError(propertyDescripter.Name, "Your error message here");
            }
        }

        return base.OnPropertyValidating(controllerContext, bindingContext, propertyDescriptor, value);
    }
}

然后在global.axax.cs Application_Start方法中,您将注册它:

ModelBinders.Binders.DefaultBinder = new DangerousCharacterModelBinder();