【问题标题】:ValidationAttribute with conditional argument value带有条件参数值的 ValidationAttribute
【发布时间】:2013-07-29 15:45:35
【问题描述】:

我是 ValidationAttributes 的新手。我想开发一个 ValidationAttribute 子类(MustExistAttribute),它可以根据运行时情况以两种方式之一工作。例如,我有一个名为 RECORD 的类,它有一个名为 KEY 的属性,我希望验证测试类似于“在数据库中查找此 KEY 并查看它是否存在”。

但是,仅此还不够。我还需要测试另一个属性(RECORD.IsNew)。那么,如果这也是真的,那么这个 KEY 存在的事实就是一个错误,但是如果 RECORD.IsNew 是假的,那么验证应该通过。换句话说,属性的 IsValid 覆盖不仅需要访问框架自动提供的值 (KEY),还需要访问 RECORD(或 RECORD.IsNew)。

这可能吗?

【问题讨论】:

    标签: validation c#-4.0 attributes


    【解决方案1】:

    我认为我的问题的答案是“否”。但是有一个解决方法。

    在应用验证的地方,即我通常会有类似的地方

    if( ModelState.IsValid)

    ,我可以添加任何我想要的测试,然后使用类似的东西

    ModelState.AddModelError( "KEY", "The database already has a record for the new KEY." );

    AddModelError 会将 IsValid 设置为 false,因此我可以重新测试并从那里开始。框架像对待所有其他错误一样对待我的新错误,将其与 KEY 属性相关联。

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 2012-10-08
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多