【问题标题】:C# using resource file for validation messagesC# 使用资源文件来验证消息
【发布时间】:2013-08-28 08:16:08
【问题描述】:

我正在开发一个 asp.net MVC-4 项目。我正在使用 资源文件 (.resx) 进行国际化。我是第一次使用它,所以这个问题可能很愚蠢,很抱歉。

我已经创建了一个用于验证的资源文件。我也在我的项目中创建了一些自定义验证。我的自定义验证之一是再次检查数组项长度的最大值和最小值。因此,如果验证失败,我必须显示验证消息,例如:

数组长度必须小于 5 且大于 1

现在我不想在消息中硬编码 min (1) 和 max (5) 值。那么谁能告诉我如何在使用资源文件提供验证消息时实现这一点?

【问题讨论】:

  • 您能发布您的自定义验证逻辑吗?通常通过将格式字符串保留在资源文件中来解决此问题,然后使用 string.Format 注入最小值和最大值

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

你可以像这样将消息存储在 resx 中(格式化字符串)

Array length must to less that {0} and greater than {1}

然后当你使用它时,类似的东西

string.Format(resource.GetString("<MyMessage>"), 5, 1);

编辑

如果你想使用StringLength属性,你可以这样做

资源字符串可以是:

Property {0} : Array length must be less than {1} and greater than {2}

及属性定义

[StringLength(5, ErrorMessageResourceName = "PostTitleLength"/*or a constant*/, ErrorMessageResourceType = typeof(ValidationResource), MinimumLength = 1)]

如果您的错误消息始终相同,您可以从 StringLengthAttribute 继承。

Modify default ErrorMessage for StringLength validation

【讨论】:

  • 但是我怎样才能在数据注释中使用这个字符串。格式,这里的意思是[Required(ErrorMessageResourceName = "PostTitleRequired", ErrorMessageResourceType = typeof(ValidationResource))]
  • @user1740381 好吧,Required 肯定不是一个很好的例子。您可以使用带参数的 ValidationAttributes(例如,参见 StringLengthAttribute)。您可以使用 string.Format 使用您的资源构建错误消息。
  • 我这样使用过[StringLength(5, ErrorMessage = string.Format(ValidationResource.PostTitleLength, 1, 5), ErrorMessageResourceType = typeof(ValidationResource), MinimumLength = 1)],但出现错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2016-01-10
  • 1970-01-01
  • 2022-10-13
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多