2013-10-18 30 views
0

當前代碼模型:委派屬性顯示名稱翻譯的處理程序

[Display(Name = "E-mail")] 
public string EMail { get; set; } 

所需的代碼:

public string EMail { get; set; } 

我想翻譯委託給一個處理程序,像這樣:

if(propertyName ==「EMail」)return「E-mail」

回答

0

基於我對你的問題的理解,我假設你正試圖在你的應用程序中實現本地化。

如果是這樣,有兩種選擇;

資源

在.NET中你可以add Resource (.resx) files到您的應用程序來處理轉換(一個RESX每種語言)。然後,您可以通過指定Display屬性的ResourceType屬性來指定資源。例如;

public class Model 
{ 
    [Display(Name = "Email", ResourceType = typeof(Resources.Strings))] 
    public string Email { get; set; } 
} 

自定義屬性

另外,如果你是在一個處理器實現這點,你可以實現一個自定義屬性,設置as demonstrated in this question

編輯:修改了上述帖子中的例子。

如果你添加一個新的資源文件到你的項目 - 比如Strings.resx並添加「HelloWorld」作爲一個字段。然後,您可以創建一個新屬性,例如LocalisedDisplayNameAttribute;

public class LocalisedDisplayNameAttribute : DisplayNameAttribute 
{ 
    public LocalisedDisplayNameAttribute(string resourceId) 
    : base(GetMessageFromResource(resourceId)) 
    { 
    } 

    private static string GetMessageFromResource(string resourceId) 
    { 
    // "Strings" is the name of your resource file. 
    ResourceManager resourceManager = Strings.ResourceManager; 
    return resourceManager.GetString(resourceId); 
    } 
} 

然後您可以如下使用它;

public class Model 
{ 
    [LocalisedDisplayName("HelloWorld")] 
    public string Email { get; set; } 
} 

讓我知道如果我能進一步幫助,

馬特

+0

我寧願不寫這行: [顯示(名字= 「電子郵件」 資源類型= typeof運算(Resources.Strings ))] 只是這樣: public string Email {get;組; } – user484204

+0

但是,謝謝你嘗試:-) – user484204

+0

好的,你對另一個選項有什麼想法 - 自定義屬性? –