我有以下jQuery:
<script>
$(document).ready(function () {
$('#btnGetIDs').click(function getIDs() {
var checkedIds = $(":checkbox:checked").map(function () {
return this.id;
}).get();
});
});
</script>
这用于创建复选框(它嵌套在数据表中的一个冗长的foreach数据行中)。
results.Append("<td> <input id=" + RosteredCareID + " type=\"checkbox\" unchecked> </td>");
我可以看到,从浏览器中调试,它正在按预期工作并创建一个ID数组。
预期的功能是: 1.系统加载页面 2.用户单击某些复选框 3.用户点击提交 4.系统获取复选框和存储在数组
中的ID下面
protected void btnConfirm_Click(object sender, EventArgs e)
{
string[] IDs = new string[20];
// IDs = "";
}
那我怎样才能从btnConfirm_Click事件中访问jQuery数组?
我尝试过一个scriptmanager代码行,但它在主页面上导致了scriptmanager的错误。
答案 0 :(得分:2)
在复选框标记中添加名称属性。
results.Append("<td><input id='" + RosteredCareID + "' type='checkbox' name='" + RosteredCareID + "' unchecked /></td>");
(注意我正确引用了你的ID。我在JS字符串中使用了单引号,以避免需要转义双引号。)
然后在服务器端,值将在Request.Form
属性中可用。你可以这样列举它们:
foreach (var name in Request.Form.AllKeys)
{
System.Diagnostics.Debug.WriteLine("Form Name: " + name + " Form Value: " + Request.Form[key]);
}
如果检查了该值,它将在那里。
可能有很多表单值,因此您需要过滤它们以获得您想要的内容。我建议你在名字前加上一个特定的字符串。例如:
results.Append("<td><input id='" + RosteredCareID + "' type='checkbox' name='RosterCareCB_" + RosteredCareID + "' unchecked /></td>");
然后在服务器端过滤该前缀。
var checkedIds = new List<string>();
foreach (var name in Request.Form.AllKeys)
{
if(name.StartsWith("RosterCareCB_") && Request.Form[name] == "on")
{
checkedIds.Add(name);
}
}