2014-11-20 5 views
0

Я пытаюсь десериализовать JSON в список C#. У меня есть код Jquery как,Deserializing Json to C# list

$(document).ready(function() { 
     $("#btn_check").click(function() { 
      var str=""; 
      x = $("#frm").serializeArray(); 
      $("#Label1").empty(); 
      $.each(x, function (i, field) { 
       // $("#Label1").append(field.name + ":" + field.value + " "); 

       str = str + field.name + ":" + field.value + " "; 

      }); 
      var jsonstr=JSON.stringify(str);   }); 
    }); 

после stringify, я получаю что-то странное, как jsonstr = __VIEWSTATE:/wEPDwUKLTg1MjI5MDU0MWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFjIFB2NoZWNrXzAFB2NoZWNrXzEFB2NoZWNrXzIFB2NoZWNrXzMFB2NoZWNrXzQFB2NoZWNrXzUFB2NoZWNrXzYFB2NoZWNrXzcFB2NoZWNrXzgFB2NoZWNrXzkFCGNoZWNrXzEwBQhjaGVja18xMQUIY2hlY2tfMTIFCGNoZWNrXzEzBQhjaGVja18xNAUIY2hlY2tfMTUFCGNoZWNrXzE2BQhjaGVja18xNwUIY2hlY2tfMTgFCGNoZWNrXzE5BQhjaGVja18yMAUIY2hlY2tfMjEFCGNoZWNrXzIyBQhjaGVja18yMwUIY2hlY2tfMjQFCGNoZWNrXzI1BQhjaGVja18yNgUIY2hlY2tfMjcFCGNoZWNrXzI4BQhjaGVja18yOQUIY2hlY2tfMzAFCGNoZWNrXzMxBQhjaGVja18zMgUIY2hlY2tfMzMFCGNoZWNrXzM0BQhjaGVja18zNQUIY2hlY2tfMzYFCGNoZWNrXzM3BQhjaGVja18zOAUIY2hlY2tfMzkFCGNoZWNrXzQwBQhjaGVja180MQUIY2hlY2tfNDIFCGNoZWNrXzQzBQhjaGVja180NAUIY2 hlY2tfNDUFCGNoZWNrXzQ2BQhjaGVja180NwUIY2hlY2tfNDgFCGNoZWNrXzQ5s98N0sYArkR3uk7Sb4bJWOocOpU = __VIEWSTATEGENERATOR: 172284EE __EVENTVALIDATION:/wEWNAKauo6nDAK5rJ0YAp7D/4IGAoPa4e0LAujww9gBAs2HpsMHArKeiK4NApe16pgDAvzLzIMJApH2i8IBAvaM7qwHAp7Dv7UBAp7Dq9oIAp7Dl/8PAp7Dg6QHAp7Dj6IEAp7D + 8YLAp7D5 + sCAp7D05AKAp7Dn9wLAp7Di4EDAoPaoaAHAoPajcUOAoPa + ekFAoPa5Y4NAoPa8YwKAoPa3bEBAoPaydYIAoPatfsPAoPagccBAoPa7esIAujwg4sNAujw768EAujw29QLAujwx/kCAujw0/cPAujwv5wHAujwq8EOAujwl + YFAujw47EHAujwz9YOAs2H5vUCAs2H0poKAs2Hvr8BAs2HquQIAs2HtuIFAs2HoocNAs2HjqwEAs2H + tALAs2HxpwNAs2HssEEAvCFnqIPppJbhAvF8AzSoMd/uZfiRXpzWu0 = check_0: на check_1: на check_2: на check_3: на check_4: на check_5: на check_6 : on check_7: on check_8: on check_9: on check_10: on check_11: on check_12: on check_13: on check_14: on check_15: on check_16: on check_17: on check_18: on check_19: on check_20: on check_21: on check_22: on check_23: on check_24: on check_25: on check_26: on check_27: on check_28: on check_29: on check_30: on check_31: on check _32: на check_33: на check_34: на check_35: на check_36: на check_37: на check_38: на check_39: на check_40: на check_41: на check_42: на check_43: на check_44: на check_45: на check_46: на check_47: на check_48: on check_49: on

check_0 to check_1 - это динамически созданные флажки, и я хочу получить их значения в C# в виде списка или в любой форме, чтобы интерпретировать и вставлять их в базу данных.

asp.net:

<form id="frm" runat="server"> 

    <asp:Panel ID="pnl_seat" runat="server"> 
     <asp:PlaceHolder ID="plhdr_seat" runat="server"> 
     checkboxes are dynamically created here 
     </asp:PlaceHolder> 
     <br /> 
     <button id="btn_check" type="button">Serialize form values</button> 
     <asp:Button ID="btn_submit" runat="server" Text="Submit" OnClick="btn_submit_Click" /> 
     <br /> 

     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /> 

    </asp:Panel> 

</form> 

картина: enter image description here

C# код:

using Newtonsoft.Json; 
class abc // some class 
{ 
    protected void btn_submit_Click(object sender, EventArgs e) 
    { 
     List<Test> myDeserializedObjList = (List<Test>) Newtonsoft.Json.JsonConvert.DeserializeObject(Request["jsonstr"], typeof(List<Test>)); 
    } 
} 

выше код, который я получил его от codeproject.com. Но при запуске этого кода я получаю исключение «str» как «null». Как нажимать label1 или str на сервер? Помоги мне, пожалуйста.

+0

Использование скрытых полей нажать код на стороне сервера ... – yash

+0

Голосование, чтобы закрыть как это вряд ли поможет любых будущих посетителей (и достаточно старый для репутации, которая должна быть установлена ​​в камне). –

ответ

0

Jquery:

$(document).ready(function() { 
     $("#btn_check").click(function() { 
      var str = ""; 
      x = $("#frm").serializeArray(); 
      str = JSON.stringify(x); 
      // $("#HiddenField1").Value(str); 
      $('#<%=hdnSelectedTicket.ClientID %>').val(str); 
      <%-- $('#<%=hdnSelectedTicket.ClientID %>')--%> 

     }); 
    }); 

ASP.NET:

<form id="frm" runat="server"> 
    <asp:HiddenField ID="hdnSelectedTicket" runat="server" /> 
    <asp:Panel ID="pnl_seat" runat="server"> 
     <asp:PlaceHolder ID="plhdr_seat" runat="server"></asp:PlaceHolder> 
     <br /> 
     <button id="btn_check" type="button">Serialize form values</button> 
     <asp:Button ID="btn_submit" runat="server" Text="Submit" OnClick="btn_submit_Click" /> 
     <br /> 

     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /> 


    </asp:Panel> 

</form> 

C#:

using Newtonsoft.Json; 
protected void btn_submit_Click(object sender, EventArgs e) 
    { 
     //string a = hdnSelectedTicket.Value; 
     List<Test> myDeserializedObjList = (List<Test>)Newtonsoft.Json.JsonConvert.DeserializeObject (hdnSelectedTicket.Value, typeof(List<Test>)); 

    } 
0

Не могли бы вы вставить больше кода? Трудно найти какие-либо проблемы из ограниченного исходного кода. Вы можете отправить str на сервер с помощью AJAX запрос: $.get('your url', {str: str})

Кстати, это кажется str не является допустимой строкой JSON. str = JSON.strigify(x) будет привязывать объект к строке JSON.


Попробуйте это: `` `

$(document).ready(function() { 
    $("#btn_check").click(function() { 
     var x = $("#frm").serializeArray(); 
     $("#Label1").empty().text(JSON.stringify(x)); 
    }); 
}); 

using Newtonsoft.Json; 
class abc // some class 
{ 
    protected void btn_submit_Click(object sender, EventArgs e) 
    { 
    List<Test> myDeserializedObjList = (List<Test>) Newtonsoft.Json.JsonConvert.DeserializeObject(Label1.Text, typeof(List<Test>)); 
    } 
} 

` ``

+0

Я добавил еще несколько кодов –

+0

Sin, это скорее комментарий, а затем ответ. – Marco

+0

Какие-либо дополнительные сведения? –