我需要验证我的asp.net页面上的所有输入都不允许下一个字符:
> < ? // \ &安培;
如何在不向每个字段添加[RegularExpression ...]的情况下,同时向我的应用的所有输入添加规则?
我的整个应用都有超过500个字段。这是一个充满形式的应用程序。
答案 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();