Пользовательская модель Binder - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужно понять, что я здесь делаю не так.

У меня есть проект .net 4.7.2.У меня есть контроллер, который наследуется от класса System.Web.Http.ApiController.

В контроллере у меня есть следующая конечная точка

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

Моя идея здесь просто тест для идентификатора

Пользовательская привязка модели выглядит следующим образом:

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

Я использую почтальон для проверки конечной точки и вижу, что URL-адрес имеет следующий формат:

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

Затем поместите точку останова на первую строку в конечной точке, но я никогда не получаю исключение, которое я ожидаю от ModelBinder.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 14 декабря 2018

Я проверил ваш код в соответствии с правильными пространствами имен.У меня проблемы с типом объекта, причина в том, что тип возвращаемого значения должен быть bool.Пожалуйста, проверьте с приведенным ниже фрагментом кода.

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;
    }
}

Я рекомендую вам следовать этой статье, протестировать и конвертировать в ваш кейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...