Опубликовать массив из магазина Ext.Net в ASP.NET MVC - PullRequest
0 голосов
/ 21 февраля 2012

Я знаю, что на форуме есть и другие вопросы по этому поводу, но до сих пор нашел полезное решение.У меня есть контроллер, определенный таким образом:

    [HttpPost]
    public ActionResult Update(int id, IList<MyObject> data)
    {
        return Json(new { success = false, message = "saved!" });
    }

Массив Json MyObject находится внутри JsonStore и отправляется при вызове функции submitData().Я вижу, что все отправлено правильно, параметр «data» является массивом MyObject, если я вручную делаю JSON.Deserialize<IList<MyObject>>(data), я получаю именно то, что мне нужно, что означает, что данные являются допустимой строкой json ... в заголовках Iможно увидеть тип контента "application / json".Я уже пользуюсь JsonValueProviderFactory, но это не помогает.Насколько я понимаю, поставщик значений должен легко сопоставлять массивы с IList, поэтому мне интересно, что я делаю что-то не так ...

Спасибо!

ОБНОВЛЕНИЕ Как отмечалось в одном комментарии, у меня немного другой сценарий использования: я на самом деле отправляю эти данные с помощью вызова Store.submitData () ... очевидно, даже если заголовки похожи, отправка из хранилища не работает, потому что она фактически генерируетстрока.

Кто-нибудь знает, как заставить магазин делать что-то похожее на JSON.stringify?

1 Ответ

1 голос
/ 21 февраля 2012

Вы не показали свой код клиента, но должно работать следующее:

Ext.Ajax.request({
    url: '@Url.Action("update", new { id = "123" })',
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    params: JSON.stringify({ 
        data: [
            { foo: 'value 1' },
            { foo: 'value 2' },
            { foo: 'value 3' }
        ]
    }),
    success: function (response) {
        alert(response.responseText);
    }
});

Предполагается, что MyObject определено так:

public class MyObject
{
    public string Foo { get; set; }
}

но, конечно, это может быть любой сложный объект.

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