2013-05-09 65 views
8

我遇到了一個在Dynamic Data Web應用程序中自定義DataAnnotations的場景。這是之情況:自定義動態數據中的數據註釋

[顯示(名稱= 「DispName」)]

公共字符串DNAME {得到;集;}

相反硬編碼名稱= 「DispName」 的用於顯示DataAnnotation,我想從DataBase中獲取一些值,並使Name屬性適合int。像:

[顯示(名稱= SomeValueFromDB)

公共字符串DNAME {獲取;集;}

有什麼辦法來顯示從數據庫顯示DataAnnotation的名稱屬性,而不是對其價值進行硬編碼?

由於提前,

Sujith

回答

11

我找到了解決辦法。但是,這僅適用,如果我們構建應用程序:

創建一個自定義類(大寫:CustomDisplayNameAttribute)它繼承DisplayNameAttribute。並將該類名稱稱爲屬性名稱上方的顯示屬性(此處爲「CustomDisplayName」)。

在爲顯示屬性設置DataAnnotation時,省略類名稱中的「屬性」部分。即。 「用於顯示的DataAnnotation」屬性將爲CustomDisplayName(不是CustomDisplayNameAttribute)。

public class DomainClass 
{ 
    [CustomDisplayName("")] 
    public object PropertyName{ get; set; } 
} 



public class CustomDisplayNameAttribute : DisplayNameAttribute 
    { 
     public CustomDisplayNameAttribute(string value) 
      : base(GetMessageFromResource(value)) 
     { } 

     private static string GetMessageFromResource(string value) 
     { 
      return "Custom Display Name"; 
     } 
    } 

希望這有助於所有....

快樂編碼....

+2

謝謝sujith。我也需要相同的:) – BonDaviD 2013-05-09 10:46:33

+1

這是非常有用的,現在我可以使用多種語言沒有很多的努力 – 2016-10-15 16:11:21