确定 CheckBox 是否被选中 ASP.NET

Determine if CheckBox is checked in ASP.NET

我在确定是否在 ASP.NET 构建的网页上选中复选框时遇到问题。 当我在 Page_Load 方法中呈现网页时,我使用如下代码检查了一些复选框:

checkbox1.Checked = true;

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

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

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

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

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

我不喜欢某些东西起作用但我不知道为什么所以请告诉我我的误解。

在您的加载事件中,您可能缺少 IsPostBack 的一部分,因此它每次都会执行并最终重写您的值。

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

      // this happens even during a postback
}

您知道 Page_Load 在每次回发之后运行,在它执行您的控制事件处理程序(例如 Button_Click 之前)吗?您可能会在每次加载页面时重置这些值。您应该在 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 进行比较。当您口头阅读代码时,就像在说 "If the checkbox is checked, and the previous statement I just said is true"。您可以缩短它,使其看起来更像 "If the checkbox is checked".

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