Как я могу вызвать привязку пользовательской модели в MVC4?

Так что, похоже, несколько человек (какВот а такжеВот) были проблемы сMVC4 model binding for ApiControllersНо ни один из них, похоже, не решает проблему, которую я вижу.

Все, что я действительно хотел бы сделать, это изменить поведение привязки массива для списков целых чисел. Скажем, у меня был такой тип запроса:

<code>public class MyRequestModel
{
    public List<long> ListOfIntegers { get; set; }

    ...
}
</code>

И метод API GET, как это:

<code>public ResultsResponseModel Get(MyRequestModel request)
{
    // use request.ListOfIntegers meaningfully

    ...

    return response;
}
</code>

Я в основном хочу иметь возможность сказать/api/results/?listOfIntegers=1+2+3+4+5 и что решимость кList<long> имущество.

Я попробовал свои обычные приемы привязки модели, но, как и большинство веб-API вMVC4 it appears to have a totally separate path for model binding.

Самое дальнее, что я получил, - это использованиеSystem.Web.Http.ModelBinding.ModelBinder атрибут наMyRequestModelи создание связующего для модели, который "реализован"System.Web.Http.ModelBinding.IModelBinder, Это последовательно приводит к исключению ссылки на объект со следами стека, которые никогда не затрагивают мой код.

Кто-нибудь ударил это? Есть мысли о том, что попробовать дальше?

UPDATEВот трассировка стека, которую я записал в своем обычаеExceptionFilterAttribute:

<code>Object reference not set to an instance of an object.
    at System.Web.Http.ModelBinding.DefaultActionValueBinder.BindParameterValue(HttpActionContext actionContext, HttpParameterBinding parameterBinding)
    at System.Web.Http.ModelBinding.DefaultActionValueBinder.<>c__DisplayClass1.BindValuesAsync>b__0(RequestContentReadKind contentReadKind)
    at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass38.<ToAsyncVoidTask>b__37()
    at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
</code>

Ответы на вопрос(1)

Ваш ответ на вопрос