试图将对象转换为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
}

请告诉我正确的答案

感谢您的帮助和时间。

试图将对象转换为javascript []{}- c#键值集合或字典<string,object>or<字符串,stri

我给了你的样本一个尝试,并注意到startPrt参数实际上被接收为ArrayDictionary(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(){
            ...
        }
    });
}

因此,序列化的数据将提供给任何风格的服务器端脚本。