[FromUri]的ASP.NET WebAPI2全局自定义模型活页夹,用于处理uri查询“ someMethod?someId = null”中的“ null”

时间:2018-10-30 21:02:53

标签: asp.net ajax asp.net-web-api asp.net-ajax asp.net-core-webapi

让我们假设在我们的一个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://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

与此技巧相结合:

https://stackoverflow.com/a/283515/863651

使用这两种资源,我认为有可能在WebApi2中达到预期的结果。

0 个答案:

没有答案