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);
}
}
我有一个自定义属性,它根据某些条件显示一条消息,其中包含取自 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);
}
}