2012-01-03 2 views
3

У меня есть пользовательская кнопка для отправки данных из хранилища на серверный код C#.cast jsondata from Ext.data.Store to list object

// 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% 20Stra% 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% 22B% C3% B3kf% C3% A6rtVer% C3% B0% 22% 3A% 221047,07% 2 2% 2C% 22Athugasemd% 22% 3A% 22% 22% 7D% 2C% 7B% 22% C3% 9AtgefandiKennitala% 22% 3A% 224603069490% 22% 2C% 22% C3% 9AtgefandiHeiti% 22% 3A% 22Land


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

Спасибо

+0

Какую кодировку вы используете? –

ответ

2

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

+0

Благодарим вас за помощь – aghaux

3

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

на стороне клиента, то есть данные в 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); 
      }