0

是否可以訪問在ViewData.Model上使用的DisplayNameAttributes,以便在將它們發送到視圖之前對其進行本地化? 事情是這樣的:在ActionFilter中本地化DisplayNameAttributes?

Public Void OnActionExecuted(ActionExecutedContext: filterContext) { 
    foreach (DisplayNameAttribute attr in filterContext...) { 
    attr.TheValue = AppMessages.GetLocazation(attr.TheValue); 
    } 
} 

什麼,我缺少的是如何訪問屬性。這可能嗎?

P.S:我們在工作中使用vb.net,它正在滲入我的大腦。非常抱歉,如果我的C#是一個關閉。

回答

1

不要在運行時更改屬性值。在最好的情況下,這將是一個空操作(因爲您將在拷貝的屬性實例上運行);在最糟糕的情況下,這會導致代碼中的競爭狀況。始終將屬性實例視爲不可變的。

如果您需要本地化[DisplayName],請將其子類並覆蓋虛擬DisplayName屬性。有關如何執行此操作的示例,請參閱Localization of DisplayNameAttribute

+0

這很傷心MS並沒有多走一步,但我認爲這是我會做的。謝謝 – 2010-05-29 16:31:28