我使用数据注释来验证我的 Web API 2 模型。对于基本的基于属性的验证(Required
、Range
等),通过注入(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/