是否可以在 MVC3 (C#) 中为 `[Display(Name="Something")]` 数据注释使用变量

2024-04-14

不知道为什么,但 MVC3 中的数据注释坚持具有常量值,我只是无法理解错误消息和显示名称等内容。我喜欢这些注释,它们非常易于使用且功能强大,但是如果您需要支持多种语言怎么办?

想象一下我有以下模型:

public class Person
{
    public string First_Name { get; set; }
}

如果我不更改任何内容并使用 MVC3 将为我构建的 CRUD 视图,我会在文本字段旁边看到一个标签,上面写着“First_Name”,因此我添加数据注释来更改显示名称,如下所示:

public class Person
{
    [Display(Name="First name")]
    public string First_Name { get; set; }
}

效果很好。但我想根据用户的语言提供不同的显示名称,使用我之前制作的函数GetDisplayName(string ToGet, string Language)它只返回我感兴趣的字符串,但如果我将数据注释更改为:

public class Person
{
    [Display(Name=GetDisplayName("First_Name", "English"))]
    public string First_Name { get; set; }
}

然后我收到一个编译器错误,告诉我注释需要常量值,为什么???

有谁知道一种方法来完成我想做的事情?谢谢

UPDATE

好吧,看来最好的方法是.resx根据下面的几个答案和其他帖子中的资源文件。这在大多数情况下都非常有效。

有谁知道我如何请求具有变量名称的资源?这次不是在数据属性的上下文中,而是在控制器和视图中。

基本上目前我正在获取资源@Resources.SomeKey但我希望能够在函数中使用它@Resources["SomeOtherKey"] where SomeOtherKey是动态生成的字符串。


如果资源文件中有翻译后的属性名称,则开箱即用...无需扩展框架。

只需使用:

[Display(Name = "Resource_Key", ResourceType = typeof(DataFieldLabels))]
public string myProperty { get; set; }

其中“Resource_Key”是资源文件中的键...“DataFieldLabels”是基础资源文件的名称。

EDIT:

为了动态访问资源文件,您可以执行以下操作:

ResourceSet resset = ResourceManager.GetResourceSet(culture, true, false);
var translated = resset.GetString("myToken")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 MVC3 (C#) 中为 `[Display(Name="Something")]` 数据注释使用变量 的相关文章

随机推荐

  • 在运行 ActionEvent 之前 GUI 不会在视觉上更新

    为了详细说明一下 我有一个如下所示的 GUI 然后我在 确定 按钮上有一个动作侦听器 其开头如下 OK Button Action Listener private void okButtonActionPerformed ActionEv
  • TSQL 将结果集均分并更新

    我的数据库有 3 个表 如下所示 Orders 表的数据如下 OrderID OperatorID GroupID OrderDesc Status Cash 1 1 1 small order 1 100 2 1 1 another or
  • NodeJS 推送队列,由 Laravel Worker 消耗

    我正在尝试使用节点应用程序发送到 SQS 的消息 因此 推送 操作由服务器 A 上的 Node App 执行 监听 操作由服务器 B 上的 Laravel App 执行 我的问题 我不知道如何格式化要使用的有效负载php artisan q
  • 在托管代码中 P/Invoking SetWindowLong 和 CallWindowProc(紧凑框架)

    我正在尝试使用 SetWindowLong 覆盖 winmobile 任务栏的窗口过程 以便捕获和阻止按下的按钮 我创建了一个类 其中包含一种用于重写的方法和一种用于恢复窗口过程的方法 MessageReceived 方法是我用来替换任务栏
  • 从代码注释中引用 TFS 工作项

    在 Visual Studio 2012 中 我想要从代码注释到 TFS 工作项的可单击引用 有没有一种简单的方法可以做到这一点 这也可以通过函数体内的注释 不是函数的摘要 来实现吗 所以我想要这样的东西
  • 如何使用c#仅获取目录中的文件名?

    当我使用下面的代码行时 我得到一个包含各个文件的整个路径的字符串数组 private string pdfFiles Directory GetFiles C Documents pdf 我想知道是否有一种方法可以只检索字符串中的文件名而不
  • 使用 spring 的条件 bean

    我正在尝试写一个ValidatorFactory这将根据其类型为我提供一个验证器 public Validator getNewValidator ValidatorType type switch case a new Validator
  • 如何修复创建新页面时的此错误?

    我有一个 Xamarin Forms 项目 在这个项目中 我已经有一个空白页面 但我添加了一个新页面 此时错误开始显示 显示的错误是 Error XLS0414 The type ContentPage was not found Veri
  • jQuery:检查字符串中是否存在特殊字符

    我知道这个问题在 Stack 上被问得更频繁 但我似乎无法从已经发布的问题中得到直接的答案 我需要检查所有特殊字符 除了 是否都在字符串中 如果是 则向用户发出警报 到目前为止我所拥有的是这样的 if Search val indexOf
  • 我可以在 C# *using* 块中拥有不同类型的对象吗?

    using Font font3 new Font Arial 10 0f font4 new Font Arial 10 0f Use font3 and font4 我知道可以在一个对象内使用多个相同类型的对象using clause
  • PhoneGap Build 版本 2.7.0 忽略 Android 上 config.xml 中的全屏首选项

    我已遵循此页面上非常明确的说明 https build phonegap com docs config xml https build phonegap com docs config xml 我已在 config xml 文件中包含以下
  • 有人能够正确使用 libsensors 吗?

    长话短说 我正在尝试编写一个可以检查CPU温度的应用程序 使用 libsensors 3 手册页 我至少能够获得 libsensors version 号 截至目前 这是我的代码 include
  • 在 Slack 上发布带有附加文件的消息

    我正在用 C 编写一个简单的控制台应用程序来与 Slack com 进行通信 我通过他们的 WebApi 执行此操作 目前我知道如何发布消息 带有附件 彩色 链接 用户等 并将文件发送到服务器 如果您以正常方式发送文件 键入文本框左侧的 上
  • 目录中的文件按文件名升序排序

    我有一个目录中的文件列表 我想按文件名对其进行排序 这是主要代码 var localPath this Server MapPath Content Img type var directory new DirectoryInfo loca
  • Date.toString() 显示哪个时区?

    默认情况下 方法执行哪个时区java util Date toString http download oracle com javase 6 docs api java util Date html toString 28 29展示 自从
  • 从服务器下载图像以显示在 CollectionView 上

    我正在开发一个用户可以出售 购买的产品应用程序 该应用程序基于集合视图 集合视图具有集合单元格 其中显示产品图像缩略图 以下代码从服务器获取产品图像 并等待下载所有图像 然后将它们显示在单元格中 以下代码有效 但用户需要等待 10 20 秒
  • 在 Woocommerce 3 中以编程方式更新产品库存

    我非常需要帮助 我正在尝试以编程方式更新 woocommerce 产品库存数量 我们通过一些 JSON 向我们提供了供应商提要 我可以从提要中读取股票 并可以正确地从帖子元中提取数据 我正在使用最新版本的 WP 和 WOO PHP 是 7
  • Android:显示一个对话框以启用 wifi

    我想 如果 wifi 被禁用 向用户显示一个对话框 可以决定他是否要启用或禁用 wifi 好吧 我可以查看 wifi 是否已启用 但我如何显示该设置对话框 这是我正在使用的代码 if wifiMan isWifiEnabled false
  • 在 spring3 控制器上返回“ModelAndView”或“String”哪个更好

    ModelAndView的返回方式 RequestMapping value list method RequestMethod GET public ModelAndView list UserAuth UserAuth user Mod
  • 是否可以在 MVC3 (C#) 中为 `[Display(Name="Something")]` 数据注释使用变量

    不知道为什么 但 MVC3 中的数据注释坚持具有常量值 我只是无法理解错误消息和显示名称等内容 我喜欢这些注释 它们非常易于使用且功能强大 但是如果您需要支持多种语言怎么办 想象一下我有以下模型 public class Person pu