asp.net-mvc – 一个ASP.NET MVC验证器,用于确保至少选中一个复选框
发布时间:2020-05-28 04:16:10 所属栏目: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-mvc – 使用Ajax.BeginForm绑定HttpPostedFileBase
- asp.net-mvc – Asp.net MVC5,如何加载.hbs文件
- asp.net – 如何阻止.net中的libwww-perl访问?
- ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法
- asp.net-web-api – 从asp.net web api定制odata输出
- asp.net-mvc – 如何从MVC控制器返回Json对象到视图
- 文件上传 – 以经典的asp上传文件
- asp.net – System.Reflection.Assembly.LoadFile锁定文件
- asp.net-mvc-3 – ASP.NET MVC 3:将应用程序移动到虚拟目录
- asp.net – @RenderSection在嵌套剃刀模板
推荐文章
站长推荐
- asp.net – ERR_CONNECTION_RESET:上传大文件时
- asp.net-mvc-4 – 如何防止复杂类型的默认绑定器
- asp.net-ajax – 建议使用不引人注意的AJAX与MVC
- asp.net-mvc-4 – 全局过滤器MVC 4的执行顺序是什
- 我是一名ASP.NET程序员(Webforms).我应该切换到M
- MVC .Net Cascade在使用EF Code First Approach时
- asp.net-mvc – ASP MVC查看内容为JSON
- asp.net – 通配符HttpHandler不处理静态文件
- asp.net – 转发器控件中的单选按钮列表
- asp.net – NuGet:’X’已经有一个依赖定义为’
热点阅读
