C# 不能取消选中复选框。ASP.NET
问题很可能是查询字符串。当我从一个搜索页面转到另一个搜索页面时,一切都崩溃了。我使用QueryString来选中在生成结果页面之前选中的所有框。这一次我可以取消选中复选框,但只能在视觉上取消选中。结果页面将被生成,就好像它们仍然被选中一样 下面是一个简单的例子。我已经添加了复选框和一个按钮C# 不能取消选中复选框。ASP.NET,c#,asp.net,C#,Asp.net,问题很可能是查询字符串。当我从一个搜索页面转到另一个搜索页面时,一切都崩溃了。我使用QueryString来选中在生成结果页面之前选中的所有框。这一次我可以取消选中复选框,但只能在视觉上取消选中。结果页面将被生成,就好像它们仍然被选中一样 下面是一个简单的例子。我已经添加了复选框和一个按钮 protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["B1"] != null) {
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["B1"] != null)
{
CheckBox1.Checked = true;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string QString = null;
if (CheckBox1.Checked)
{
QString += "?B1=1";
}
Response.Redirect("/TestPage1.aspx" + QString);
}
如果我转到Default.aspx并添加“?B1=1”(Default.aspx?B1=1),我将得到选中复选框的页面。如果我取消选中并按下按钮1,我将被重定向到页面“TestPage1.aspx?B1=1”
有人能解决这个问题吗?如果我理解正确,您在TestPage1上选中了复选框(
/TestPage1.aspx?B1=1
),当您手动取消选中复选框并单击按钮1时,您将返回到/TestPage1.aspx?B1=1
,此时复选框将重新检查
这是因为在控制事件(如按钮1的OnClick
事件)之前引发Page\u Load
事件。详细说明页面生命周期事件
由于您的页面正在发回到/TestPage1.aspx?B1=1
,因此页面加载
处理程序会在按钮1\u单击
之前看到查询字符串。当按钮1\u单击
处理程序运行时,复选框已经被重新检查,处理程序重定向回相同的url,包括查询字符串
对于您的示例,一个简单的解决方案是检查页面加载
事件中的IsPostBack
属性,并且仅在页面未发回时选中复选框
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && Request.QueryString["B1"] != null)
{
CheckBox1.Checked = true;
}
}
事情是这样的:
/TestPage1.aspx?B1=1
复选框1
,然后单击按钮1
Page\u Load()
在服务器上运行完整的/TestPage1.aspx?B1=1
地址。它会看到B1
查询字符串,因此CheckBox1
被设置为再次选中按钮1\u Click()
在服务器上运行。它看到现在选中了CheckBox1
,因此QString
再次包含B1
。服务器现在重定向到/TestPage1.aspx?B1=1
(仍然包含完整的查询字符串)Page\u Load()
再次运行,复选框1
再次设置为选中状态Checkbox1
现在处于选中状态TestPage1.aspx
(没有?B1=1
),则可以不选中该复选框。但只要该?B1=1
存在,事件循环总是会再次将其放回
这里最常见的错误是没有预料到第3步。请记住,任何服务器事件(即使是简单的按钮单击)都会作为操作的一部分运行。
您可以通过更改
页面加载()
以在设置复选框之前包含!IsPostBack()
测试来帮助实现这一点。复选框和单选按钮在asp.net中有很多错误。请签出此线程: