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

asp.net core attribute adapter overwrites the server error message

我有一个自定义属性,它根据某些条件显示一条消息,其中包含取自 class 的动态值(例如:对于“{1}”,该值必须小于“{0}” '.).我也想在客户端上进行验证,所以我创建了一个属性适配器,但是因为可以更改值,所以我使用了一些替换器,如“__val1__”和“__val2__”,客户端将替换这些值使用正确的值。

现在我发现,如果客户端未经过验证并且服务器上的验证失败,而不是“对于 'XXX',值必须小于 'YYY'”。我收到消息“对于‘__val1__’,值必须小于‘__val2__’。”这是我为客户端验证放置的消息,但似乎服务器错误也更改为这个。

有没有办法告诉 asp.net 核心适配器不应该覆盖服务器错误消息?

经过一些调试后,我发现当为服务器验证执行适配器时,上下文的类型是 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);
     }
  }