我们使用 xVal 和此处DataAnnotationsValidationRunner
描述的标准从我们的域对象和 ASP.NET MVC 中的视图模型中收集验证错误。我希望有一种方法可以让验证运行程序通过使用自定义 DataAnnotations 来识别两个属性何时不匹配。
现在我被迫在跑步者之外这样做,这样:
if (!(model.FieldOne == model.FieldTwo))
errors.Add(new ErrorInfo("FieldTwo", "FieldOne must match FieldTwo", model.FieldTwo));
我的问题是:这可以使用属性级验证属性来完成,还是我被迫使用类级属性(在这种情况下,我必须修改跑步者......我的后续问题将是如何最好在这种情况下检索它们)。
谢谢!
更新: 我终于想出了如何编写对象查询来实现所选答案中的建议;如果有人好奇,我会将此查询的结果与标准验证运行程序的结果连接起来。请注意,我将 TypeId 更改为确认字段属性。
var classErrorQuery =
from attribute in
instance.GetType().GetCustomAttributes(typeof (ValidationAttribute), false).Cast
<ValidationAttribute>()
where !attribute.IsValid(instance)
select new ErrorInfo(attribute.TypeId.ToString(), attribute.FormatErrorMessage(string.Empty), instance);