试图将对象转换为javascript []{}- c#键值集合或字典or<字符串,stri
本文关键字:string 集合 字典 object stri 字符串 or 键值 转换 对象 javascript | 更新日期: 2023-09-27 17:49:40
我想更好地理解将对象转换为名称与值集合的问题
说…如果我能这样做就好了
1) java脚本需要一些微调吗?打包数据…
2)对我来说最重要的是:从键值Js
转换到Dictionary<T,T> C#
的正确方法是什么?
Aspx / Html
部分
<input type="text" id="tbx_Name" value="Avi" />
<input type="text" id="tbx_City" value="TelAviv" />
<input type="text" id="tbx_Country" value="Israel" />
<select id="ChosenRandomClass" style="display:none">
<option selected="selected" value="0">(choose a random)</option>
<option value="1">random Top Beach</option>
<option value="2">random Top Center</option>
<option value="3">random Local Pub</option>
</select>
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#
部分
public void AddNewRecord(object startPrt)
{
Dictionary<string, string> SenthDate = new Dictionary<string, string>();
// .....etc
}
请告诉我正确的答案
感谢您的帮助和时间。
我给了你的样本一个尝试,并注意到startPrt参数实际上被接收为Array的Dictionary(string, object)。因此,如果像这样进行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<string, object>();
foreach (Dictionary<string, object> 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(){
...
}
});
}
因此,序列化的数据将提供给任何风格的服务器端脚本。