ASP.NET MVC 3 Json Model Binding с 3-х уровневым объектом - PullRequest
0 голосов
/ 02 ноября 2011

Почему не работает связывание 3-уровневой модели вложенности из json?

Тестирование с 2 уровнями, скажем, добавление свойства строки на LevelTwo, работает, но 3 уровня не так? Это по замыслу, ошибка или я что-то упустил?

JQuery сообщение на стороне клиента:

    $.ajax({
        url: "MyController/MyAction",
        dataType: "json",
        type: "POST",
        cache: false,
        data: {
            Level1: {
                Level2: {
                    StringValue: "Test"
                }
            }
        }
    });

Модель на стороне сервера:

public class MyForm
{
    public LevelOne Level1 { get; set; }
}

public class LevelOne
{
    public LevelTwo Level2 { get; set; }
}

public class LevelTwo
{
    public string StringValue { get; set; }
}

1 Ответ

1 голос
/ 02 ноября 2011

Почему не работает 3-уровневая привязка модели вложения от json

Вы не отправляете JSON на сервер.Если вы хотите отправить запрос JSON, вот как:

$.ajax({
    url: "MyController/MyAction",
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    type: "POST",
    cache: false,
    data: JSON.stringify({ 
        Level1: { 
            Level2: { 
                StringValue: "Test" 
            } 
        } 
    })
});

Метод JSON.stringify - это то, что сериализует литерал javascript в строку JSON.Он изначально встроен в современные браузеры.Если вам нужна поддержка устаревших браузеров, вы можете добавить на свою страницу скрипт json2.js .

...