自定义阵列模型粘合剂

时间:2018-12-14 02:03:14

标签: c# asp.net-web-api

我需要了解我在这里做错了什么。

我有一个.net 4.7.2项目。 我有一个从System.Web.Http.ApiController类继承的Controller。

在控制器中,我具有以下端点

public HttpResponseMessage EchoIdentifierArray([ModelBinder(typeof(CommaDelimitedArrayBinder))] IEnumerable<int> ids)
{
   return Request.CreateResponse(HttpStatusCode.OK, ids); 
}

我在这里的想法仅仅是对传入的id的测试。

自定义模型活页夹如下:

public class CommaDelimitedArrayBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        throw new System.NotImplementedException();
    }
}

我正在使用邮递员来测试终点,并且我可以看到网址的格式如下:

/ api / v3 / Echos / EchoIdentifierArray?ids = 160742,160892

然后在端点的第一行上放置一个断点,但我从未遇到过ModelBinder期望的异常。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

我根据正确的名称空间测试了您的代码。我遇到对象类型问题,原因是匹配的返回类型应该是布尔值。请使用以下代码段进行测试。

public class CommaDelimitedArrayBinder : System.Web.Http.ModelBinding.IModelBinder
{
    public CommaDelimitedArrayBinder()
    {

    }

    public bool BindModel(
            System.Web.Http.Controllers.HttpActionContext actionContext,
            System.Web.Http.ModelBinding.ModelBindingContext bindingContext)
    {
        return true;
    }
}

我建议您关注this文章并进行测试并转换为您的案例。