【问题标题】:Switching from xVal to nHibernate Validation从 xVal 切换到 nHibernate 验证
【发布时间】:2009-11-04 09:23:16
【问题描述】:

我有一个带有 xVal 和数据注释的 ASP.NET MVC 项目,我需要切换到 nHibernate Validation。使用数据注释我有一个DataAnnotationsValidationRunner,我正在做这样的事情:

  var errors = DataAnnotationsValidationRunner.GetErrors(this).ToList();
  if (errors.Any())
      throw new RulesException(errors);

您如何使用 nHibernate.Validator 做到这一点?

更新:我看到了这样的东西:

 var engine = new ValidatorEngine();
 var errors = engine.Validate(objstovalid)

但我做不到

if (errors.Any())
    throw new RulesException(errors);

因为错误的类型不正确 (xVal.ServerSide.ErrorInfo)。

【问题讨论】:

    标签: asp.net-mvc validation xval nhibernate-validator


    【解决方案1】:

    据我所知,xVal 曾经为 NHibernate Validation 提供跑步者,但它只适用于以前的版本。据我所知,当前 NHV 版本没有可用的跑步者。

    澄清一下,您还想使用 xVal 吗?如果不是,则忽略上述内容,并像这样在 NHV 上运行验证:

    var validator = new ValidatorEngine();
    InvalidValue[] values = validator.Validate(theEntityYouWantToValidate);
    

    【讨论】:

    • 据我所知,NHibernate ValidatorEngline 不会抛出异常。它只返回一个 InvalidValues 数组。您应该能够在 NHibernate.Validator 或 NHibernate.Validator.Engine 命名空间中找到 ValidatorEngine 和 InvalidValue 类型。
    • 因此,澄清一下,而不是处理异常,您只需检查返回的 invalidvalues 数组的大小 - 如果大于 z,循环遍历它并将错误添加到您的模型状态。跨度>
    • 您将运行验证器,将任何错误移至模型状态,然后运行您的业务规则验证(可能只是自定义方法或其他),并将其中的任何错误也添加到模型状态.
    • 是的,我是因为 NHV 的 xVal 跑步者不完全支持新版本。我想这很快就会更新(如果项目继续的话)。顺便说一句,只是对您从 DataAnnotations 迁移的原因感兴趣?
    • 您不需要 ValidationMessage Helper 中的第二个参数。它应该显示包含在您的模型状态错误集合中的消息。检查您(或图书馆)是否正在添加此信息。例如。 modelState.AddModelError(...
    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多