ASP.NET WebApi更改默认参数绑定错误消息

时间:2014-11-06 12:51:14

标签: .net asp.net-mvc asp.net-web-api

我将动作方法定义为

public HttpResponseMessage Get(SomeEnum? param)
{
   ...
}

如果我为param传递了一些无法转换为Some Enum类型的无效值,我会收到以下消息:

The value 'xxx' is not valid for Nullable`1.

这是我可以从ModelState获取的默认消息。我想自定义此消息。我已经在ASP.NET MVC中找到了很多提示(如here),但对于WebAPI却没有。更改DefaultModelBinder.ResourceClassKey在WebAPI中不起作用。我也尝试通过自定义ParameterBindingRule来解决问题:

config.ParameterBindingRules.Insert(0, parameter =>
{
   if (!typeof (EnumType?).IsAssignableFrom(parameter.ParameterType))
      return parameter.BindAsError("Error message");

    return null;
});

不幸的是,这也行不通。

1 个答案:

答案 0 :(得分:1)

以下是解决方案:

// in Application_Start 
ModelBinderConfig.TypeConversionErrorMessageProvider = (context, metadata, value) =>
{
    ...
}