asp.net-mvc – 一个ASP.NET MVC验证器,用于确保至少选中一个复
发布时间:2020-12-16 00:06:14 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC 2项目,我在其中创建了一个数据传输对象,用于从网页表单接收数据.表单上有两组复选框.我想验证对象以确保每个组中至少有一个复选框被选中. 我正在服务器端进行验证,以便用户无法破解任何客户端验证. (稍后我将使用jQuery添加客户端验证;
我有一个ASP.NET MVC 2项目,我在其中创建了一个数据传输对象,用于从网页表单接收数据.表单上有两组复选框.我想验证对象以确保每个组中至少有一个复选框被选中.
我正在服务器端进行验证,以便用户无法破解任何客户端验证. (稍后我将使用jQuery添加客户端验证;这很简单.) 我的理解是我必须为我的数据传输对象类创建自己的自定义ValidationAttribute,但我不明白如何创建和使用一个可以接受任意复选框属性列表的类,以确保其中至少有一个是真正.我猜我必须调用这样的属性: [AtLeastOneCheckbox("set1check1","set1check2","set1check3",ErrorMessage = "You must check at least one checkbox in set 1.")] [AtLeastOneCheckbox("set2check1","set2check2","set2check3","set2check4","set2check5",ErrorMessage = "You must check at least one checkbox in set 2.")] public class MyFormDTO { ... } AtLeastOneCheckboxAttribute的实现是什么样的? 或者有不同的方式我应该做这种验证? 解决方法
如果您有多个复选框组,则只需要多次定义该属性.
[AttributeUsage( AttributeTargets.Class)] public class AtLeastOneCheckboxAttribute : ValidationAttribute { private string[] _checkboxNames; public AtLeastOneCheckboxAttribute(params string[] checkboxNames) { _checkboxNames = checkboxNames; } protected override ValidationResult IsValid(object value,ValidationContext validationContext) { var propertyInfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance) .Where(x=>_checkboxNames.Contains(x.Name)); var values = propertyInfos.Select(x => x.GetGetMethod().Invoke(value,null)); if (values.Any(x => Convert.ToBoolean(x))) return ValidationResult.Success; else { ErrorMessage = "At least one checkbox must be selected"; return new ValidationResult(ErrorMessage); } } } UPDATE 如您所知,只有在所有属性都通过后才会调用类级别验证.为了得到错误,只需使用空字符串作为键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – DbFunctions.TruncateTime在ASP .NET CORE中的L
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用
- asp.net – 使用响应对象生成PDF时的预加载器
- asp.net-mvc – 如何在MVC3中托管Web服务?
- ASP.NET MVC模型绑定IList <>参数
- asp.net-mvc – ASP.NET MVC的最佳实践
- .NET图表控件 – 轴X文本旋转
- asp.net – .NET接口签名
- asp.net-mvc – 可在LAN中远程访问的IIS页面,但不能在服务器
- 数组 – 如何在vbscript中实现具有可变大小的数组