2

我们使用 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);
4

1 回答 1

1

请参阅编写 CompareTo DataAnnotation 属性

您还可以检查 MVC2 的默认项目中的 AccountMOdel,有一个属性 PropertiesMustMatchAttribute 应用于 ChangePasswordModel 以验证 NewPassword 和 ConfirmPassword 匹配

于 2010-04-07T20:45:36.920 回答