2017-09-05 44 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