2010-10-13 21 views
3

我的頁面上有一個ListBox。我正在對C#函數進行AJAX調用,並且需要傳遞所選項目的值。下面是我有:被傳遞到C#函數看起來像解析C#中的jQuery序列化數據#

$('#btnSubmit').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: 'Default.aspx/GetSelectedValues', 
     data: '{selectedValues: ' + $('#lbItems').serialize() + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess 
    }); 
}); 

<select id="lbItems" multiple="multiple"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 


[System.Web.Services.WebMethod] 
public static string GetSelectedValues(string selectedValues) 
{ 
    // 
} 

數據:

lbItems=1&lbItems=3&lbItems=5 

是否有任何內置的C#功能,可以反序列化,很容易,將這些值轉換成某種排列?或者,也許有更好的方式從jQuery傳遞數據?

回答

2

如果傳遞的參數作爲JSON,.NET will automatically deserialize the JSON for you

+0

這實際上是我首選的方法,但我不知道如何通過AJAX調用傳遞值數組(在這種情況下,所選選項的值)。我有一個關於此前的帖子:http://stackoverflow.com/questions/3926098/passing-an-array-of-values-in-an-asp-net-jquery-ajax-post。如果您知道使用JSON的方式,我很樂意看到一個示例。 – Steven 2010-10-13 20:22:10

+0

我在另一個問題上回答了,因爲那裏的話題更多。 – 2010-10-13 21:33:16

+0

太棒了,謝謝。 – Steven 2010-10-14 14:54:21

2

這種類型的格式實際上很容易用字符串類'拆分功能來解析。

只需使用string.Split和&符號即可得到一個字符串數組,它是您的各個參數。然後將這些字符串中的每一個劃分爲等號,以得到一個兩元素數組,其中元素0是var名稱,元素1是值。

代碼示例:

string data = "lbItems=1&lbItems=3&lbItems=5"; 

    string[] items = data.Split(new char[]{'&'}); 

    foreach (string item in items) 
    { 
     string[] vals = item.Split(new char[]{'='}); 
     Console.WriteLine(vals[0] + ": " + vals[1]); 
    } 
+1

每一個名稱 - 值對都將被URL編碼,所以你也必須處理。 – 2010-10-13 20:16:34