试图将对象强制转换为javascript {} – C#键值集合或字典或

我想更好地理解将对象转换为名称与值集合的问题

说…就好像我能这样做

1) java脚本需要一些微调吗? 打包数据..

2)对我来说最重要的是:从键值Js转换为Dictionary C#的正确方法是什么?

Aspx / Html部分

     (choose a random) random Top Beach random Top Center random Local Pub  

JavaScript / jQuery部分

  function AddNew() { if (!confirm("would you like to add this contact ?")) return; var Name = $('#tbx_Name').val(); var City = $('#tbx_City').val(); var Country = $('#tbx_Country').val(); var selectedRC = $('#ChosenRandomClass option:selected').val(); var hDate = [] var param1 = { key: "Name", value: Name }; var param2 = { key: "City", value: City }; var param3 = { key: "Country", value: Country }; var param4 = { key: "SelctedClass", value: selectedRC }; hDate.push(param1); hDate.push(param2); hDate.push(param3); hDate.push(param4); // is this part necessary the data will not get to // code behind properly without the serializing ? var startPrt = Sys.Serialization.JavaScriptSerializer.serialize(hDate); ajaxUpdate("addNew", startPrt); } 

Code behind C#部分Code behind C#Code behind C#

 public void AddNewRecord(object startPrt) { Dictionary SenthDate = new Dictionary(); // .....etc } 

我会很感激正确的答案

谢谢你的帮助和时间。

我试了一下你的样本,注意到startPrt参数实际上是作为一个字典 数组 (字符串,对象)接收的 。 因此,如果你像这样进行AJAX调用:

 var hDate = []; hDate.push({ key: "Name", value: Name }); hDate.push({ key: "City", value: City }); hDate.push({ key: "Country", value: Country }); hDate.push({ key: "SelctedClass", value: selectedRC }); $.ajax({ contentType: 'application/json; charset=utf-8', url: 'MyPage.aspx/AddNewRecord', type: 'POST', data: JSON.stringify({ startPrt: hDate }), success: success, // success callback error: error // error callback }); 

您可以定义WebMethod,如下所示将startPrt参数转换为字典:

 [WebMethod] public static void AddNewRecord(object startPrt) { var dict = new Dictionary(); foreach (Dictionary pair in (Array)startPrt) dict.Add((string)pair["key"], pair["value"]); } 

传统的方法是构造一个普通的javascript对象, jQuery.ajax(...)可以使用它而无需任何预处理。

 var hDate = { "Name": $('#tbx_Name').val(), "City": $('#tbx_City').val(), "Country": $('#tbx_Country').val(), "SelctedClass": $('#ChosenRandomClass').val() }; ajaxUpdate("addNew", hDate); 

ajaxUpdate() ,ajax表达式将是这样的:

 function ajaxUpdate(action, data) { ... $.ajax({ url: '...', data: data, ... success: function(){ ... } }); } 

因此,序列化数据将可用于任何风格的服务器端脚本。