首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整个类上的xVal、DataAnnotations

整个类上的xVal、DataAnnotations
EN

Stack Overflow用户
提问于 2009-08-28 16:49:43
回答 1查看 779关注 0票数 4

我已经对一个对象进行了完整的验证,并且正在尝试找出处理它的最好方法。

给定以下类:

代码语言:javascript
复制
public class LetterResponse {
 public Guid Id {get;set;}
 public bool SendBlankCart {get;set;}
 public string ToName {get;set;}
 public string ToAddress {get;set;}
}

我希望在持久化类之前使用dataannotation和xval来验证它,但是我有一个复杂的验证,它需要多个属性。

伪:

代码语言:javascript
复制
if SendBlankCart {
 - no validation on ToName, ToAddress 
} else {
 ToName - required.
 ToAddress - required. 
}

我想这样注释:

代码语言:javascript
复制
[LetterResponseValidator]
public class LetterResponse {
 public Guid Id {get;set;}
 public bool SendBlankCart {get;set;}
 public string ToName {get;set;}
 public string ToAddress {get;set;}
}

并有一个如下的验证规则:

代码语言:javascript
复制
public class LetterResponseValidator : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value.GetType() == typeof(LetterResponse))
            {
                var letterResponse = (letterResponse) value;
                if (letterResponse.SendBlankCard)
                {
                    return true;
                } else
                {
                    if (string.IsNullOrEmpty(letterResponse.FromDisplayName) || string.IsNullOrEmpty(letterResponse.ToAddress1))
                    {
                        return false;
                    }
                    return true;
                }

            }
            return false;
        }
    }

我希望这个参数是我的LetterResponse类的实例,但它从来没有在我的验证运行器上被调用。

有谁知道解决这个问题的方法吗?

谢谢,

硬件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-28 16:56:48

我不认为这与你有一个类级验证器的事实有关。要排除任何连接,请尝试将所需的虚拟验证器应用于"ToName“,并查看是否调用了该验证器。

如果它正在被调用,那么让我知道,如果它没有被调用,那么你应该检查你是否已经用Global.asax.cs文件中的DataAnnotationsModelBinder覆盖了你的标准模型绑定器:

代码语言:javascript
复制
ModelBinders.Binders.DefaultBinder = new DataAnnotationsModelBinder();

有关这个完整的演示项目的更多详细信息,请阅读此blog article about client-side validation

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1348218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档