2016-11-03 39 views
0

我有一個屬性表示許多不同類中的「應付金額」。他們不共享通用的基類或接口。用於驗證和UiHint的複合屬性

此屬性具有以下規則:

  • 必須大於0
  • 必須是具有不超過2位小數的數值
  • 必須不超過最大長度(默認爲13 )
  • 使用UI提示的 「金額」
  • 添加模型元數據的最大長度

這個屬性會在我負責的很多不同的系統中出現很多,所以我想要有一個屬性「PayableAmountAttribute」來封裝所有這些功能。我知道我可以做一個複合驗證屬性(連同元數據,通過實現IMetadataAware),但我很難理解如何將UI提示包含在此屬性中。

有沒有一種方法可以將我的驗證屬性和UIHint屬性合併爲一個屬性?

回答

0

因爲我實現IMetadataAware,我獲得對的ModelMetadata一個實例,這讓我設置TemplateHint屬性訪問:

public class PayableAmountAttribute : ValidationAttribute, IMetadataAware 
{  
    public override bool IsValid(object Value) 
    { 
     // Implementation of looping through validation attributes 
    } 

    public void OnMetadataCreated(ModelMetadata Metadata) 
    { 
     Metadata.TemplateHint = "Amount"; 
     Metadata.AdditionalValues.Add("Amount.MaxLength", 10); 
    } 
}