- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:除了使用 Validator.TryValidateObject
之外,还有其他验证 DataAnnotations 的方法吗?原因:无法指定验证器是否要验证 IValidatableObject
。如果它仅在对象有效时才对其进行验证,那也没关系。
我想要完成的事情:获取所有验证结果的列表
如果您查看来自 Validator.TryValidateObject
的反编译代码,请深入了解 GetObjectValidationErrors
。你会得到这个(我已经重新格式化以便于阅读)
private static IEnumerable<Validator.ValidationError> GetObjectValidationErrors(object instance, ValidationContext validationContext, bool validateAllProperties, bool breakOnFirstError)
{
var list = new List<Validator.ValidationError>();
list.AddRange(Validator.GetObjectPropertyValidationErrors(instance, validationContext, validateAllProperties, breakOnFirstError));
if (list.Any())
return list; //Doesn't continue if errors are found
var validationAttributes = Validator._store.GetTypeValidationAttributes(validationContext);
list.AddRange(Validator.GetValidationErrors(instance, validationContext, validationAttributes, breakOnFirstError));
if (list.Any(()))
return list; //Doesn't continue if errors are found
var validatableObject = instance as IValidatableObject;
if (validatableObject != null)
{
foreach (ValidationResult validationResult in Enumerable.Where<ValidationResult>(validatableObject.Validate(validationContext), (Func<ValidationResult, bool>) (r => r != ValidationResult.Success)))
list.Add(new Validator.ValidationError((ValidationAttribute) null, instance, validationResult));
}
return list;
}
如您所见,它在获得一组验证结果后立即中断。
最佳答案
您是否尝试过查看 ControllerContext 中的 ModelState 属性?假设您有一个名为 Index 的 Controller 操作,它接受已发布的模型。在此方法中,您可以检查 ModelState 属性并使用一点 LINQ 魔法,为您的模型获取所有验证错误。这种方法不会告诉您验证错误来自何处。只是一条文本错误消息,可能还有异常。
public ActionResult Index(MyModel model)
{
if( !ModelState.IsValid){
var errors = this.ModelState.Values.SelectMany(x => x.Errors);
}
return View();
}
关于c# - 从 Validator.TryValidateObject 获取所有 ValidationResults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027629/
我用反射器搜索,但没有找到 ValidationResult.MemberNames 的情况。应该包含多个值。 所以,首先我想知道为什么 MS 必须这样做 IEnumerable ,那么既然他们已经这
我有一个像这样的自定义 ValidationAttribute : public class ReceiverRegion : ValidationAttribute { pr
这是与 Assign ValidationResult to specific field? 类似的问题 我的 View 模型如下所示: [DisplayName("Password")]
Msdn : public static readonly ValidationResult ValidationResult.Success Represents the success of th
我有这样一个类: [CustomValidation(typeof(Validate_Class_MetaData), "Validate")] public class tbl_MetaData {
在 ASP.NET MVC 中,存在一个包含 ModelErrorCollection 的 ModelState 类。 ModelError 表示模型绑定(bind)期间发生的错误。 我知道 Vali
问题:除了使用 Validator.TryValidateObject 之外,还有其他验证 DataAnnotations 的方法吗? 原因:无法指定验证器是否要验证 IValidatableObje
我正在使用流畅的验证,我已经将一些常见的电子邮件地址验证规则提取到自定义电子邮件验证器中,例如。 public class CustomeEmailValidator : AbstractValid
我想在用户输入时验证文本字段。最初文本是空的。验证规则是: 1 它只是数字。 2 大于0小于5,下面是xmal中的代码。
public abstract class Animal , IValidatableObject { public string Id {get;set;}
我是一名优秀的程序员,十分优秀!