приведите jsondata из Ext.data.Store к списку объектов - PullRequest
3 голосов
/ 03 января 2012

У меня есть созданная пользователем кнопка для отправки данных из хранилища на серверный код c #.

    // send data through link
    function valideit() {
        var jsonData = Ext.encode(Ext.pluck(store.data.items, 'data'));
        Ext.Ajax.request({
            url: '/Contact/Validate', params: { data: jsonData },
            success: function (result, request) {
                Ext.MessageBox.alert('Success', 'Data return from the server: ' + result.responseText);
            },
            failure: function ( result, request) { 
                Ext.MessageBox.alert('Failed', 'Successfully posted form: '+result.date); 
            } 
        });
    }

И C #:

    [HttpPost]
    public JsonResult Validate(object data)
    {
        return Json(new
        {
            success = "This worked", failure = "Doesnt work"
        },JsonRequestBehavior.AllowGet);
    }

это данные, которые я получаю из "данных"


данные =% 5B% 7B% 22% C3% 9AtgefandiKennitala% 22% 3A% 224911069990% 22% 2C% 22% C3% 9AtgefandiHeiti% 22% 3A% 22Landsbanki% 20Absolute% 20Return% 22% 2C% 22Rekstrarf% C3% A9lagKennitala% 22% 3A% 227005942549% 22% 2C% 22Rekstrarf% C3% A9lagNafn% 22% 3A% 22Landsvaki% 20hf.% 22% 2C% 22ISIN% 22% 3A% 22IS0000016913% 22%2C% 22Au% C3% B0kenni% 22% 3A% 22LARS% 22% 2C% 22Tegundheiti% 22% 3A% 22Hlutdeildarsk% C3% ADrteinioghlutir% 22% 2C% 22Skr% C3% A1% C3% B0heiti% 22% 3A% 22%C3% 93skr% C3% A1% C3% B0% 22% 2C% 22Me% C3% B0all% C3% ADft% C3% Admi% 22% 3A% 220% 22% 2C% 22Fj% C3% B6ldi% 22% 3A2101%2C% 22Gengi% 22% 3A0.860383% 2C% 22Gjaldmi% C3% B0ill% 22% 3A% 22USD% 22% 2C% 22GengiGjaldmi% C3% B0ils% 22% 3A% 22117,59% 22% 2C% 22В% C3% B3kf%C3% A6rtVer% C3% B0% 22% 3A% 22212,53% 22% 2C% 22Athugasemd% 22% 3A% 22% 22% 7D% 2C% 7B% 22% C3% 9AtgefandiKennitala% 22% 3A% 226105109810% 22% 2C%22% C3% 9AtgefandiHeiti% 22% 3A% 22LFESTI% 20Borgart% C3% BAN% 22% 2C% 22Rekstrarf% C3% A9lagKennitala% 22% 3A% 22% 22% 2C% 22Rekstrarf% C3% A9lagNafn% 22% 3A% 22% 22% 2C% 22ISIN% 22% 3A% 22IS0000020105% 22% 2C% 22Au% C3% B0kenni%22% 3A% 22LFEST1% 2010% 201% 22% 2C% 22Tegundheiti% 22% 3A% 22% C3% 96nnurver% C3% B0br% C3% A9f% 22% 2C% 22Skr% C3% A1% C3% B0heiti% 22%3A% 22Skr% C3% A1% C3% B0% 22% 2C% 22Me% C3% B0all% C3% ADft% C3% Admi% 22% 3A% 2212,32% 22% 2C% 22Fj% C3% B6ldi% 22% 3A984567%2C% 22Gengi% 22% 3A1.06348% 2C% 22Gjaldmi% C3% B0ill% 22% 3A% 22ISK% 22% 2C% 22GengiGjaldmi% C3% B0ils% 22% 3A% 221% 22% 2C% 22В% C3% B3kf%C3% A6rtVer% C3% B0% 22% 3A% 221047,07% 22% 2C% 22Athugasemd% 22% 3A% 22% 22% 7D% 2C% 7B% 22% C3% 9AtgefandiKennitala% 22% 3A% 224603069490% 22% 2C%22% C3% 9AtgefandiHeiti% 22% 3A% 22Land


Так как я могу получить эти данные в удобном для использования формате ???

Спасибо

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Привет, я хотел ответить на свой вопрос после получения помощи от Джейсона.

на стороне клиента, у вас есть данные в STORE.data.items (в моем случае сетка ExtJS)

это действие при нажатии кнопки:

function valideit() {
    var jsonData = Ext.encode(Ext.pluck(store.data.items, 'data'));
    Ext.Ajax.request({
        url: '/Contact/Validate', params: { data: jsonData },
        success: function (result, request) {
            Ext.MessageBox.alert('Success', 'Data return from the server: ' + result.responseText);
        },
        failure: function (result, request) {
            Ext.MessageBox.alert('Failed', 'Successfully posted form: ' + result.date);
        }
    });
}

А на стороне сервера:

[HttpPost]
            public JsonResult Validate(string data)
            {
                var response = HttpUtility.UrlDecode(data);


                List<Investments> myDeserializedObjList = (List<Investments>)Newtonsoft.Json.JsonConvert.DeserializeObject(data, typeof(List<Investments>));


                return Json(new
                {
                    success = "This worked!"
                },JsonRequestBehavior.AllowGet);
            }
2 голосов
/ 03 января 2012

Используйте System.Web.HttpUtility.UrlDecode, чтобы преобразовать данные в неэкранированную строку, а затем используйте библиотеку Json.NET , чтобы десериализовать строку JSON в объект c #

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