asp.net – 用于验证的数据注释,至少一个必填字段?
发布时间:2020-05-25 02:52:30 所属栏目:asp.Net 来源:互联网
导读:如果我有一个包含字段列表的搜索对象,可以使用System.ComponentModel.DataAnnotations命名空间进行设置,以验证搜索中至少有一个字段不为空或为空吗?即所有的字段都是可选的,但至少应该输入一个字段。 我会为此创建自定义验证器 – 它不会给客户端验证,只
|
如果我有一个包含字段列表的搜索对象,可以使用System.ComponentModel.DataAnnotations命名空间进行设置,以验证搜索中至少有一个字段不为空或为空吗?即所有的字段都是可选的,但至少应该输入一个字段。 解决方法我会为此创建自定义验证器 – 它不会给客户端验证,只是服务器端。请注意,为了使其工作,您需要使用可空类型,因为值类型将默认为0或false: 首先创建一个新的验证器: using System.ComponentModel.DataAnnotations;
using System.Reflection;
// This is a class-level attribute,doesn't make sense at the property level
[AttributeUsage(AttributeTargets.Class)]
public class AtLeastOnePropertyAttribute : ValidationAttribute
{
// Have to override IsValid
public override bool IsValid(object value)
{
// Need to use reflection to get properties of "value"...
var typeInfo = value.GetType();
var propertyInfo = typeInfo.GetProperties();
foreach (var property in propertyInfo)
{
if (null != property.GetValue(value,null))
{
// We've found a property with a value
return true;
}
}
// All properties were null.
return false;
}
}
然后,您可以使用以下方式装饰您的模型: [AtLeastOneProperty(ErrorMessage="You must supply at least one value")]
public class SimpleTest
{
public string StringProp { get; set; }
public int? Id { get; set; }
public bool? BoolProp { get; set; }
}
然后当您调用ModelState.IsValid时,您的验证器将被调用,您的消息将被添加到您的视图上的ValidationSummary。 请注意,您可以扩展它以检查返回的属性类型,或者查找属性,以便包含/排除验证,如果你想 – 这是假设一个通用的验证器,不知道任何关于它验证的类型。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET C#静态变量是全局的?
- asp.net – 如何为ValidateAntiForgeryToken选择一个盐值
- ASP Classic中的HTTP身份验证(基本或摘要)通过IIS
- asp.net – Internet Explorer 9中的URL查询字符串值的UTF-
- asp.net-mvc-4 – 会话到期后重定向到特定页面(MVC4)
- nTier应用程序中的.Net会员资格
- asp.net-mvc – ASP.Net MVC在回发之间保持动作参数
- 设置ASP.NET(Visual Studio)服务器配置的默认页面
- asp.net – 评论未使用的代码会不会给我的页面带来任何方式
- 使用Asp.net Web API时,使用DataContract和DataMember属性有
推荐文章
站长推荐
- asp.net-mvc-3 – ASP.Net MVC 3,Ninject和Quart
- asp.net-mvc – 如何为ASP.NET MVC站点定义catch
- 选择完成后和提交上传之前的asp.net FileUpload事
- ASP.Net Response.Redirect不能在Application_Er
- asp.net – 在web.config文件中设置重定向
- 如何在IIS上解决接近100%的CPU利用率
- asp.net-mvc – 在Azure中启用自定义错误
- asp.net-mvc – 在没有模型的情况下手动将验证添
- asp.net-mvc – 如何使用ASP.NET MVC 5和OWIN获取
- 验证 – ASP.Net MVC2:ModelState是无效的,但我
热点阅读
