如何组合验证属性错误消息的资源字符串?

2024-03-02

如果我在验证属性上收到错误消息,例如:

  • 名字为必填项
  • 姓氏为必填项

然后是这样的验证属性:

[Required(ErrorMessageResourceName = "Error_FirstNameRequired", ErrorMessageResourceType = typeof(Strings)]
public string FirstName {get;set;}

我不想对每个实例都进行翻译。有没有办法在格式化程序中组合资源字符串,例如:

[Required(ErrorMessage = string.Format("{0} {1}", Strings.Label_FirstName, Strings.Error_IsRequired))]
public string FirstName {get;set;}

当然,这是行不通的,因为它需要是一个编译时常量。但是有没有办法实现这一点,以便我可以构建本地化字符串并重用那些已经存在的字符串?我想到只创建自定义属性,允许设置额外的属性并覆盖默认输出消息,但在我看来,这将是太多的重构和有点混乱。

有任何想法吗?


您可以在资源中定义的字符串中使用格式。 当你使用{0},如图所示FieldRequired,如果可能,将插入显示名称。 否则它将回退到属性名称,如下所示MiddleName.

Example:

资源:

Strings.resx
String.resx

Strings.nl.resx
Strings.nl.resx

执行:

public class MyClass
{

    [Display(ResourceType = typeof(Strings), Name = "FirstName")]
    [Required(ErrorMessageResourceName = "FieldRequired",
              ErrorMessageResourceType = typeof(Strings))]
    public string FirstName { get; set; }

    [Required(ErrorMessageResourceName = "FieldRequired",
              ErrorMessageResourceType = typeof(Strings))]
    public string MiddleName { get; set; }

    [Display(ResourceType = typeof(Strings), Name = "LastName")]
    [Required(ErrorMessageResourceName = "FieldRequired",
              ErrorMessageResourceType = typeof(Strings))]
    public string LastName { get; set; }

    // Validation errors for culture [en] would be:
    //             "First name is a required field."
    //             "MiddleName is a required field."
    //             "Last name is a required field."
    //
    // Validation errors for culture [nl] would be:
    //             "Voornaam is een benodigd veld."
    //             "MiddleName is een benodigd veld."
    //             "Achternaam is een benodigd veld."
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何组合验证属性错误消息的资源字符串? 的相关文章

随机推荐

  • Google Compute Engine 分配静态 IP 定价?

    当我们为 Compute Engine 实例分配静态 IP 时 我们是否需要为该实例支付额外费用 我已阅读他们的文档 但没有找到有关该功能定价的任何信息 UPDATE 自 2020 年 1 月 1 日起 静态和临时外部 IP 在使用时按 0
  • 将数组拆分为大小相等的窗口[重复]

    这个问题在这里已经有答案了 我正在尝试拆分numpy array长度为 40 的较小的 大小相等的numpy arrays 其中较小数组的数量由用户给出 较小数组之间允许有一些重叠 因为在给定较小数组某种形式的重叠的情况下 可能会出现全长只
  • 在 SOAP 消息中使用 XSLT 替换命名空间 uri

    我有一条输入肥皂消息 试图用不同的字符串替换命名空间 URI 的一部分 我可以用不同的 URI 替换整个 URI 但无法修改现有的 URI 我需要查找 OLDSTRING 并替换为 NEWSTRING 字符串 VARIABLESTRING
  • 在 Solr 中增强布尔字段

    是否可以提高 Solr 中的布尔字段以便获得更高的分数 我们有一个索引 看起来有点像这样 文档ID title 描述 keywords 已审阅 搜索时 已审阅的文档 即 is reviewed true 的权重应高于未审阅的文档 而不是完全
  • VoiceXML 录制整个通话,包括菜单选项

    我正在尝试使用 VoiceXML 在 Nexmo 上 录制整个电话 我可以单独进行录音或给出菜单提示并转接呼叫 但我不知道如何同时执行这两项操作 我想从头到尾记录通话 包括转接的通话部分 我想象 VoiceXML 看起来像这样 但这不是有效
  • 用多态函数覆盖模板化函数

    如果我有 template
  • 为什么 addOnScrollListener 不起作用?

    我尝试在滚动到 recyclerView 底部时实现加载更多 当我的 XML 只有 recyclerView 时它可以工作 但当我将它放入滚动视图和 setNestedScrollingEnabled false 时它不起作用 Requir
  • 限制显示的表格行数

    如果我有一个包含很多行的简单 HTML 表格 我怎样才能只显示x行数 HTML table tr th Process th th User th th CPU th tr tr td system welcome exe td td dv
  • HTML5输入颜色默认颜色

    The input type color 默认颜色为黑色 000000 即使我给它一个空值
  • 如何将 Azure 逻辑应用中 For_Each 循环的输出合并到单个平面数组?

    我有一个For Each在调用另一个嵌套逻辑应用程序的 Azure 逻辑应用程序中循环 嵌套逻辑应用的每次迭代的结果是一个包含字符串数组的 JSON 对象 如下所示 Results string a string b 因此 父逻辑应用程序中
  • Java 如何反转 BigInteger?

    我需要反转BigInteger 假设我有BigInteger x 我需要计算x modPow new BigInteger 1 p 我收到以下错误 java lang ArithmeticException BigInteger not i
  • 解锁模拟器或设备以进行 Android 测试

    我正在编写 Android 功能测试 我需要设备处于唤醒状态并且应用程序处于可视化状态才能正常工作 我已经咨询过安卓开发者 http developer android com tools testing activity testing
  • IE9 在哪里寻找大图标?

    IE9 具有将特定网站固定到 Windows7 任务栏的概念 对于某些网站 例如 Facebook 它会在任务栏中以及后退按钮旁边显示一个超大的图标 我如何告诉 IE 为我的网站执行此操作 虽然有点晚了 但我发现上面的答案有些不完整 ico
  • 将“dist”类的对象转换为r中的数据框

    如果可以将数据框转换为 dist 类的对象 是否可以做相反的事情 将类 dist 转换为数据框 例如 1 2 3 4 2 0 088814413 3 0 084929382 0 030413813 4 0 063245553 0 02912
  • 如何阻止输入函数插入新行?

    我知道我可以通过添加逗号来阻止 print 写入换行符 print Hello world print Hello world end for Python 3 x 但我该如何停止raw input or input对于Python 3 x
  • 如何在我自己的 HTML 中使用 WordPress 联系表单 7?

    我想在我的网站上使用 WordPress 联系表单 7 但我已经有一个 HTML CSS 布局 因此 我想修改该插件以将其与自定义 HTML 代码一起使用
  • 在 iOS 上的多个应用程序之间共享数据

    我知道这方面有很多线程 但似乎没有一个能满足我想要寻找的内容 这是我的限制 不是使用私有 API 框架或未记录的黑客行为 目录访问可能会带来应用程序被拒绝的风险 因为那个 能够在不同的地方共享数据 供应商 应用程序开发商 数据可以在生命周期
  • 如何让等待栏在 Matlab 中工作?

    我希望为需要相当长一段时间的操作提供等待时间 这是我的代码 h waitbar 0 Please wait for i 1 counterend waitbar i waitbarcounter Atemp At i step handle
  • 如何仅使用键在 vs code 中的当前资源管理器目录中创建文件?

    就像在 vim nerd 树插件中一样 当您在 vim nerd 树中按 m 然后按 a 按钮时 您可以在光标位于 Nerd 树上的当前目录中添加文件 可以在vs code中实现吗 也许一些插件 不幸的是 还没有这样的插件 但你可以定义一些
  • 如何组合验证属性错误消息的资源字符串?

    如果我在验证属性上收到错误消息 例如 名字为必填项 姓氏为必填项 然后是这样的验证属性 Required ErrorMessageResourceName Error FirstNameRequired ErrorMessageResour