如何解决asp.net core 属性适配器覆盖服务器错误信息
我有一个自定义属性,它根据某些条件显示一条消息,其中包含从类中获取的动态值(例如:对于“{1}”,该值必须小于“{0}”。)。我也想在客户端上进行验证,所以我创建了一个属性适配器,但是因为值可以更改,所以我使用了一些替换器,如“__val1__”和“__val2__”,客户端将用正确的值替换这些值。
现在我发现如果客户端未验证并且验证在服务器上失败,而不是“对于 'XXX',该值必须小于 'YYY'。”我收到消息“对于‘__val1__’,值必须小于‘__val2__’。”这是我为客户端验证设置的消息,但似乎服务器错误也更改为该错误。
有没有办法告诉 asp.net core 适配器不应该覆盖服务器错误消息?
解决方法
经过一些调试,我发现当为服务器验证执行适配器时,上下文的类型是 ModelValidationContext
public override string GetErrorMessage(ModelValidationContextBase validationContext)
{
var modelContext = validationContext as ModelValidationContext;
if (modelContext == null)
{
return GetErrorMessage(validationContext.ModelMetadata,"__val1__","__val2__");
}
else
{
var model = modelContext.Container as <Class>;
var val1 = //get the real value from the model;
var val2 = //get the real value from the model
return GetErrorMessage(validationContext.ModelMetadata,val1,val2);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。