我将动作方法定义为
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;
});
不幸的是,这也行不通。
答案 0 :(得分:1)
以下是解决方案:
// in Application_Start
ModelBinderConfig.TypeConversionErrorMessageProvider = (context, metadata, value) =>
{
...
}