Как публиковать данные JSON в MVC Visual Studio 2015

Я пытаюсь опубликовать объекты json в MVC в предварительном просмотре Visual Studio 2015. Однако данные, похоже, не привязаны к параметру методов действий. Раньше в предыдущих версиях MVC была зарегистрирована JsonValueProviderFactory, которая обрабатывала это, но я не могу найти ее в MVC6? Изменилась ли настройка, в предыдущих версиях она работала «из коробки»?

В основном у меня есть метод контроллера

public ActionResult Save(Person person)
{
   ...
}

Который я пытаюсь вызвать из javascript:

var personData = { Name : 'John Doe' };
$.ajax({
        url: '@Url.Content("~/Person/Save")',
        type: "POST",
        data: JSON.stringify(personData ), 
        dataType: "json", 
        contentType: "application/json; charset=utf-8"
    })

В предыдущих версиях MVC объект json был сопоставлен с параметром c#, см., например, эту статью http://webcognoscere.com/post/How-to-POST-a-JSON-object-to-a-Controller-Action.aspx


person Bjorn    schedule 26.11.2014    source источник
comment
Покажите нам код? Какую сборку MVC вы используете (покажите свой проект.json)?   -  person AndersNS    schedule 27.11.2014
comment
Вы правы, я обновил пост. Я использую Visual Studio 2015 Preview (я не уверен, какая именно сборка была отправлена)   -  person Bjorn    schedule 27.11.2014


Ответы (1)


Добавьте [FromBody] к параметру. В MVC 6 логика MVC и Web API была объединена в одну систему. Это означает, что содержимое, которое необходимо десериализовать как JSON из тела сообщения, должно быть явно указано в параметре метода действия:

public ActionResult Save([FromBody] Person person)
{
    ...
}
person Eilon    schedule 02.12.2014