我的页面上有一个ListBox。我正在对C#函数进行AJAX调用,我需要传递所选项的值。这就是我所拥有的:
$('#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)
{
//
}
传递给C#函数的数据如下所示:
lbItems=1&lbItems=3&lbItems=5
是否有可以轻松反序列化的内置C#函数,将值转换为某种数组?或者也许有更好的方法从jQuery传递数据?
答案 0 :(得分:6)
答案 1 :(得分:2)
这种类型的格式实际上很容易用字符串类'Split function。
进行解析只需使用带有&符号的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]);
}
答案 2 :(得分:2)
如果您将参数作为JSON传递,.NET will automatically deserialize the JSON for you。