【问题标题】:Data Annotation - Dynamic assignment?数据注释 - 动态分配?
【发布时间】:2017-09-05 19:48:39
【问题描述】:

我有一个类“SampleDTO.cs”,我想在运行时分配数据分析属性。

举个例子

SampleDTO.cs {

public string Name
{
    get;set;

}

}

我需要根据条件强制、必填字段验证、最小或最大字段验证。我一直在寻找一个论坛,并没有得到任何解决方案..

我的期望是,

if(some condition1)
{
    check SampleDTO.Name property for Required field validator check.
}
else if(some condition2)
{
    check SampleDTO.Name property for minimum and maximum length check.
}
else{
    someother check.
}

(这可以通过在 SampleDTO.cs 类上装饰所需的最小/最大长度属性来轻松完成。我希望它能够动态实现它而不是静态分配。)

提前致谢。

【问题讨论】:

  • 条件是与 DTO 本身相关联,还是在 DTO 外部?换句话说,你能举个例子吗?
  • 似乎有更好的方法来实现您想要的,但这可能是可能的,具体取决于您的需要,通过自定义 DataAnnotationsModelValidatorProvider。见:stackoverflow.com/questions/4088274/…

标签: c# asp.net-mvc


【解决方案1】:

你不能做一个 string.IsNullorWhitespace(SampleDTO.Name) 吗?然后检查条件中的最小值和最大值的长度?

如果你的意思是动态的,比如不设置属性,这些字符串方法可以工作。

【讨论】:

  • 是的,它会起作用,但是我们必须为字符串长度、null 等的每个条件编写自己的自定义方法,这不是针对一个类的,这个范围会更大。所以我希望使用数据注释而不是编写我们自己的代码。 :) 非常感谢您的快速回复。
  • 我明白了。我想我起初误解了这个问题。你可以按照 steven.vakil 上面的建议去做,但我会为它写一些 javascript,祝你好运!
  • 在我们的自定义类上使用数据注释是可能的,我成功地做到了。例如,在我的课堂上,我创建了一个属性并编写了以下定义。 RequiredAttribute oRequired = new RequiredAttribute { AllowEmptyStrings = false, ErrorMessage = message }; if (oRequired.IsValid(this.UtteranceVal)) { return false; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 2012-01-08
  • 2013-05-03
  • 2011-07-12
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多