CheckBox控件默认选中后,就算不选中,获得的结果仍然是选中状态

不得不戒 2014-03-19 05:36:59
我在后台设置了:CheckBox1.Checked = true;
当我在页面中将Checkbox的钩取消后,点击去人,后台获得的仍然是CheckBox1.Checked为true

我做了一个简单的例子
前台代码如下:
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:Button ID="Button1" runat="server"
Text="Button" onclick="Button1_Click" />
</div>
</form>
</body>

后台代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if(this.IsPostBack==true)
CheckBox1.Checked = true;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (CheckBox1.Checked) Response.Write("Checked");
else Response.Write("NO");
}


结果是无论我页面单选框是否选中,点击提交按钮后,页面显示的用意是Checked。
我想请教下各位大神,如何能获得不选中的值,就是我例子中代码能运行到输出NO。
...全文
636 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dotar 2014-03-20
  • 打赏
  • 举报
回复
典型的散分的
不得不戒 2014-03-20
  • 打赏
  • 举报
回复
引用 3 楼 Lyble 的回复:
页面的执行周期没理清楚,程序先执行Page_Load事件,再到点击事件里面,你在Page_Load将它改为true,在点击事件里面当然就是true了
是的,关键就是这边,后来我发现了
義東 2014-03-20
  • 打赏
  • 举报
回复
页面的执行周期没理清楚,程序先执行Page_Load事件,再到点击事件里面,你在Page_Load将它改为true,在点击事件里面当然就是true了
不得不戒 2014-03-20
  • 打赏
  • 举报
回复
发现问题所在了, 在后台代码中,应该
if(!this.IsPostBack)
            CheckBox1.Checked = true;
这样写,这样的话,你取消选中状态,提交的时候就再是原先的选中状态了
倒退一天 2014-03-20
  • 打赏
  • 举报
回复
因为CheckBox1 没有回发到服务端,所以服务器端CheckBox1永远不会改变。可以设置AutoPostBack属性为true,或者用ajax回发。 建议楼主好好看一下服务器控件的生命周期

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧