ASP.NET WebApi更改默认参数绑定错误消息
我将动作方法定义为ASP.NET WebApi更改默认参数绑定错误消息,.net,asp.net-mvc,asp.net-web-api,.net,Asp.net Mvc,Asp.net Web Api,我将动作方法定义为 public HttpResponseMessage Get(SomeEnum? param) { ... } 如果我为param传递了一些无效值,而该值不能转换为某个枚举类型,则会收到以下消息: The value 'xxx' is not valid for Nullable`1. 这是我可以从ModelState获得的默认消息。我想自定义此邮件。我在ASP.NET MVC(如)中找到了很多技巧,但在WebAPI中却没有找到。更改DefaultModelBind
public HttpResponseMessage Get(SomeEnum? param)
{
...
}
如果我为param传递了一些无效值,而该值不能转换为某个枚举类型,则会收到以下消息:
The value 'xxx' is not valid for Nullable`1.
这是我可以从ModelState获得的默认消息。我想自定义此邮件。我在ASP.NET MVC(如)中找到了很多技巧,但在WebAPI中却没有找到。更改DefaultModelBinder.ResourceClassKey在WebAPI中不起作用。我还尝试通过自定义ParameterBindingRule来解决这个问题:
config.ParameterBindingRules.Insert(0, parameter =>
{
if (!typeof (EnumType?).IsAssignableFrom(parameter.ParameterType))
return parameter.BindAsError("Error message");
return null;
});
不幸的是,这也不起作用。以下是解决方案:
// in Application_Start
ModelBinderConfig.TypeConversionErrorMessageProvider = (context, metadata, value) =>
{
...
}
您可以创建一个自定义异常过滤器来实现您的目标。@AnkushJain我已经定义了全局异常过滤器,但在这种情况下无法访问它。我想我必须创建某种自定义活页夹或验证器。它会工作的。可能是您没有遵循适当的规则来实施它。请仔细阅读