让我们假设在我们的一个web-api控制器中有一种类似这样的方法:
[HttpGet]
public async Task<IHttpActionResult> SomeMethod([FromUri] SomeModel options)
{
[...]
SomeModel类是这样的:
public class SomeModel {
public long? SomeId {get;set;}
}
如果我们像这样对方法执行GET请求:
http://our.host/api/foobar/someMethod?someId=null/undefined
然后我们得到一个关于null / undefined的错误,不适用于属性'SomeId'。我知道我们可以通过在为null / undefined时省略“ someId”来解决此问题。但是,这需要在服务调用中编写代码,这有点过时。
是否可以注册一个可以处理所有控制器/动作中所有[FromUri]用法转换的全局模型绑定器?这是我能找到的最接近的答案:
https://stackoverflow.com/a/43978293/863651
但是,此答案仅适用于针对特定操作的特定模型的特定属性。我正在寻找一种在全局Web API配置级别(又称为服务器启动)上应用这种调整的方法。像这样:
httpConfiguration.Services.Replace(typeof(...), new MyClass());
有迹象表明这种调整确实是可能的:
https://www.strathweb.com/2013/04/asp-net-web-api-parameter-binding-part-1-understanding-binding-from-uri/
但是我找不到与我要达到的目标接近的东西。
更新:这种方法似乎很有希望
与此技巧相结合:
https://stackoverflow.com/a/283515/863651
使用这两种资源,我认为有可能在WebApi2中达到预期的结果。