2012-03-01 49 views
2

我有一個這樣的視圖模型:我如何創建一個具有不同資源文件的公共ViewModel?

public class MyViewModel 
{ 
    [Display(Name = "One_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string One { get; set; } 

    [Display(Name = "Two_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string Two { get; set; } 
} 

這是對頁面1使用,而偉大的工程(如拉回資源)時,我做的東西是這樣的:

@Html.LabelFor(model => model.One) 

但我也想使用這個ViewModel,但我不想將這些屬性指向不同的資源文件(例如Resources.User.Resource2)。

我不想欺騙課堂,但我會接受一些OO技巧。

問題是屬性參數必須是字符串,常量,typeof或數組表達式。

解決此問題的最佳方法是什麼?

+0

@Darin Dimitrov當我需要他的時候。 :) – RPM1984 2012-03-01 22:50:29

回答

0

是的,它似乎像MVC不支持這種情況。您可以提供自己的ResourceType類,但它必須具有靜態屬性(例如,在您的示例中爲public static string One_Namepublic static string Two_Name),它們返回顯示字符串,並且沒有優雅的方式使其按照您的需要進行操作。

但由於Html.LabelFor沒有做任何特別驚天動地的事情,所以你可以很容易做到。只需編寫自己的<label>元素並直接獲取本地化的字符串,就像調用ResourceManager.GetString一樣簡單。在大多數情況下,您仍然可以使用Html.LabelFor,並且只有在某些視圖確實需要更改顯示文本的情況下(希望很少)纔會寫入自己的標籤。

相關問題