2

オブジェクトを名前と値のコレクションにキャストする問題をよりよく理解したい

言う...私がそのようにそれをすることができれば

1) java-scriptには微調整が必​​要ですか?データのパッキング。

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

}

正解をいただければ幸いです

あなたの親切な助けと時間をありがとう。

4

2 に答える 2

2

サンプルを試してみたところ、startPrtパラメータが実際には 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"]);
}
于 2012-12-27T00:57:31.803 に答える
0

jQuery.ajax(...)従来のアプローチは、前処理なしで使用できるプレーンな JavaScript オブジェクトを作成することです。

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(){
            ...
        }
    });
}

したがって、シリアル化されたデータは、どのようなフレーバーのサーバー側スクリプトでも利用できるようになります。

于 2012-12-26T23:54:31.973 に答える