微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net core 属性适配器覆盖服务器错误信息

如何解决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 举报,一经查实,本站将立刻删除。