0
當前代碼模型:委派屬性顯示名稱翻譯的處理程序
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需的代碼:
public string EMail { get; set; }
我想翻譯委託給一個處理程序,像這樣:
if(propertyName ==「EMail」)return「E-mail」
當前代碼模型:委派屬性顯示名稱翻譯的處理程序
[Display(Name = "E-mail")]
public string EMail { get; set; }
所需的代碼:
public string EMail { get; set; }
我想翻譯委託給一個處理程序,像這樣:
if(propertyName ==「EMail」)return「E-mail」
基於我對你的問題的理解,我假設你正試圖在你的應用程序中實現本地化。
如果是這樣,有兩種選擇;
資源
在.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; }
}
讓我知道如果我能進一步幫助,
馬特
我寧願不寫這行: [顯示(名字= 「電子郵件」 資源類型= typeof運算(Resources.Strings ))] 只是這樣: public string Email {get;組; } – user484204
但是,謝謝你嘗試:-) – user484204
好的,你對另一個選項有什麼想法 - 自定義屬性? –