c# - IValidatableObject.Validate() 中的本地化

标签 c# .net validation localization data-annotations

我使用数据注释来验证我的 Web API 2 模型。对于基本的基于属性的验证(RequiredRange 等),通过注入(inject)自定义 ModelMetadataProvider 可以很容易地提供本地化消息。但是,对于更复杂的规则,我实现了 IValidatableObject,它返回 ValidationResult 序列:

public class ValidationResult
{
    public ValidationResult(string errorMessage);
    public ValidationResult(string errorMessage, IEnumerable<string> memberNames);
}

这里好像没有办法指定ErrorMessageResourceName。而且我不想让我的模型依赖于本地化提供商。我该如何解决这个问题?

最佳答案

如果在文化对系统可用之前调用 IValidatableObject.Validate 方法,就会发生这种情况。如果从 Controller 操作手动调用 Validate 方法,则错误消息会正确本地化。

您在哪里设置文化?你需要在 Controller > ExecuteCore 中设置它。请看this发布或This帖子可能会有所帮助。

关于c# - IValidatableObject.Validate() 中的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801150/

相关文章:

c# - 从 lambda 表达式获取自定义属性

c# - 在 C# 中将查询字符串序列化为 Json - 值不显示,仅显示键。为什么?

c# - 如何允许用户在 PropertyGrid 中设置表达式来确定属性值

python - 简单的Python输入错误

C++11 cin 输入验证

c# - 使用 Fortran DLL 进行 NUnit 测试

c# - 特定版本 Windows 10 的目标代码,例如 Build 10586

.net - MonoTouch 错误 MT2002 : Can not resolve reference

c# - 在 ASP.NET 中正确使用 Response.Write()

javascript - JQuery 切换数字和字符输入