2017-09-05 43 views
0

我有一个类“SampleDTO.cs”,我想在运行时分配数据annanatoation属性。数据注解 - 动态分配?

有关示例

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类。我期待这动态而不是静态分配来实现它。)

在此先感谢。

+0

与DTO本身相关的条件,还是DTO的外部条件?换句话说,你能举个例子吗? –

+0

似乎有一种更好的方法可以实现您想要的功能,但这可能是可行的,具体取决于您所需的功能,方法是自定义DataAnnotationsModelValidatorProvider。请参阅:https://stackoverflow.com/questions/4088274/possible-to-change-data-annotations-during-runtime-asp-net-mvcs-range-requ –

回答

-1

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

如果你的意思是动态的,因为在不设置属性,这些字符串方法将工作。

+0

是的,它会工作,但我们必须写我们的自定义方法为每个条件的字符串长度,空值等,这不是一个类,这个范围会更大。所以我正在寻找使用数据注释,而不是写我们自己的代码。 :)非常感谢您的快速回复。 – kamal

+0

我明白了。我想我起初误解了这个问题。你可以做上面提到的steven.vakil,但是我会为它写一些javascript,祝你好运! –

+0

利用我们自定义类的数据注释是可能的,我成功地做到了。例如,在我的课程中,我创建了一个属性并编写了以下定义。 RequiredAttribute oRequired = new RequiredAttribute { AllowEmptyStrings = false, ErrorMessage = message }; if(oRequired.IsValid(this.UtteranceVal)) { return false; } – kamal