2012-03-01 55 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,并且只有在某些视图确实需要更改显示文本的情况下(希望很少)才会写入自己的标签。

相关问题