gpt4 book ai didi

c# - 如何创建具有不同资源文件的通用 ViewModel?

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:40 25 4
gpt4 key购买 nike

我有一个像这样的 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)

但我也想在第 2 页 上使用此 ViewModel,但我不想将属性指向不同的资源文件(例如 Resources.User.Resource2 ).

我不想欺骗类,但我愿意接受一些 OO 技巧。

问题是属性参数必须是字符串、常量、typeof 或数组表达式。

解决这个问题的最佳方法是什么?

最佳答案

是的,MVC 似乎不支持这种情况。您可以提供自己的 ResourceType 类,但它必须具有返回显示字符串的静态属性(例如 public static string One_Namepublic static string Two_Name),并且没有优雅的方法可以让它执行您想要的操作。

但是自Html.LabelFor没有做任何特别惊天动地的事情,你可以在没有 View 的情况下轻松完成。自己写就可以了 <label>元素并直接获取本地化字符串,就像调用ResourceManager.GetString一样简单.您仍然可以使用 Html.LabelFor在大多数情况下,只有在特定 View 确实需要改变显示文本的情况下(希望很少见)才诉诸于编写自己的标签。

关于c# - 如何创建具有不同资源文件的通用 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com