试图将对象强制转换为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(){ ... } }); }
因此,序列化数据将可用于任何风格的服务器端脚本。