2014-11-06 122 views
1

我已經行動方法定義爲ASP.NET的WebAPI更改默認參數綁定錯誤消息

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

如果我通過了PARAM一些無效的值,它是無法轉換爲某些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

您可以創建自定義ExceptionFilter實現你porpose。 – 2014-11-06 12:58:54

+0

@AnkushJain我已經定義了全局異常過濾器,但在這種情況下還沒有達到。我想我必須創建一些自定義綁定或驗證器。 – Michal 2014-11-06 13:49:27

+0

它會工作。可能是你沒有遵循適當的規則來實現它。請仔細閱讀http://www.asp.net/web-api/overview/error-handling/web-api-global-error-handling – 2014-11-06 18:50:22

回答

0

這裏是解決方案:

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