确定是否在ASP.NET中选中了CheckBox

时间:2015-03-04 17:29:59

标签: c# asp.net webforms

我确定在ASP.NET中的网页构建中是否选中了复选框。 当我在Page_Load方法中渲染网页时,我使用以下代码检查一些复选框:

checkbox1.Checked = true;

在页面上我有按钮来处理表格中的数据,点击这个按钮我检查是否选中了复选框:

if(checkbox1.Checked == true)
{
    //do something
} else {
    //do something else
}

但是我发现从Checked属性获得的值总是与我在第一步中设置的值相同。该属性永远不会返回CheckBox当前状态的值。 这是我的问题:为什么?

我通过以不同方式设置检查来绕过该问题:

checkbox1.Attributes.Add("checked","true");

我不喜欢什么时候有效,但我不知道为什么这样,请告诉我我误解的原因。

2 个答案:

答案 0 :(得分:2)

在您的加载事件中,您可能会错过IsPostBack的部分内容,因此每次都会执行该操作并最终重写您的值。

protected void Page_Load(object sender, EventArgs e)
{
      if (!IsPostBack)
      {
           // do initial initialization here
      }

      // this happens even during a postback
}

答案 1 :(得分:1)

在执行控件事件处理程序(例如Button_Click)之前,您确实知道每次回发后都会运行Page_Load吗?您可能每次加载页面时都会重置值。您应该在if语句中编写初始化代码,以确保不会覆盖已发布的值。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        checkbox1.Checked = true;
    }
}

另外,

if(checkbox1.Checked == true)
{
    //do something
} else {
    //do something else
}

由于checkbox1.Checked值已经是布尔值,因此无需将其与true进行比较。当你口头阅读代码时,它就像是在说#34;如果选中了复选框,我刚才说的前一个陈述是真的"。你可以缩短它,使其更像是"如果选中复选框"。

if(checkbox1.Checked)
{
    //do something
} else {
    //do something else
}