输入控件类型复选框始终为true

时间:2013-08-27 20:40:57

标签: c# asp.net html5

我已经搜索了所有讨论这个问题的主题,并且似乎找不到使用Asp.net C#来解释这个问题的一个主题,一切都是javascript或MVC或PHP我打开一个关于这个问题的新问题的推理。

我有2个输入控件类型复选框

<input runat="server" type="checkbox"  name="chkChildSexMale" id="chkChildSexMale" />
<input runat="server" type="checkbox" name="chkChildSexFemale" id="chkChildSexFemale"/>
    <asp:Button ID="btnSaveCheckBoxes" runat="server" Text="Save CheckBox" OnClick="btnSaveCheckBoxes_Click" />

* 已编辑 **

protected void SaveCheckBoxes()
{
  if (chkChildSexMale.Checked)
      {
          do something
      }
      else if (chkChildSexFemale.Checked)
      {
          do something else
      }

}

然后在我的按钮点击事件中,我调用此方法

protected void btnSaveCheckBoxes_Click(object sender, EventArgs e)
{
SaveCheckBoxes();
}

3 个答案:

答案 0 :(得分:5)

您应该使用输入类型广播,而不是复选框,用于两个互斥选项:

<input runat="server" type="radio"  name="chkChildSex" value="male" id="chkChildSexMale" />
<input runat="server" type="radio" name="chkChildSex" value="female" id="chkChildSexFemale" />

当您对两个复选框使用相同的name属性时,第二个会覆盖第一个复选框。当您对两个单选按钮使用相同的name属性时,它会关联它们,并且值是已检查项目的值。

答案 1 :(得分:1)

虽然两个复选框的id属性不同,但name属性是相同的。

此外,关于使用单选按钮的建议最基于您尝试做的事情。

<input runat="server" type="radio" name="rdoChildSex" value="Male" />
<input runat="server" type="radio" name="rdoChildSex" value="Female" />

同样,当你需要在两个选项之一中选择时,我建议使用上面的单选按钮示例。但是如果你想为复选框获得类似无线电的功能,你可以试试这个......

<input runat="server" type="checkbox" name="chkChildSexMale" value="Male" OnCheckedChanged="Check_Clicked" />
<input runat="server" type="checkbox" name="chkChildSexFemale" value="Female" OnCheckedChanged="Check_Clicked"/>

void Check_Clicked(Object sender, EventArge e)
{
    var checkbox = ((CheckBox)sender);       

    if (checkbox.Value == "Male")
    {
        chkChildSexFemale.Checked = false;
        chkChildSexMale.Checked = true;
        do something...
    }
    else
    {
        chkChildSexMale.Checked = false;
        chkChildSexFemale.Checked = ;
        do something else...
    }
}

上面的代码应该真正涵盖你的所有基础。甚至有些矫枉过正。但是应该有用。


尝试将代码更改为以下内容:

    if (chkChildSexMale.Checked == true)   
    {
         do something   
    }   
    else if (chkChildSexFemale.Checked == false)   
    {
         do something else   
    }

答案 2 :(得分:0)

我的问题是页面加载我使用我的数据阅读器根据特定值设置复选框。当我点击我的按钮时,单击它是用数据库中的值写入我选择的值。所以我必须添加if(!Page.IsPostBack)

提供我提供的信息真的很难弄清楚,所以我感谢所有人试图提供帮助