ASP.NET флажок автоответчик не работает

Я разработал простую страницу с двумя текстовыми полями, одним флажком, одной кнопкой и одним ярлыком.

При запуске я хочу установить флажок, чтобы активировать кнопку, а затем ввести два числа в два текстовых поля, нажать кнопку, чтобы выполнить сложение, и показать результат в метке.

Но когда я нажимаю флажок, обратная передача страницы не работает; он не пишет Страница отправлена ​​обратно на страницу, и кнопка по-прежнему отключена.

Однако, если я включаю кнопку и выполняю добавление, она вызывает обратную передачу страницы, а также вызывает checkedchanged метод.

<asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
<asp:TextBox ID="txtSecond" runat="server"></asp:TextBox>
<asp:Label ID="result" runat="server"></asp:Label>

<td>
    <asp:CheckBox ID="cboptions" runat="server" AutoPostBack="True"   
        onCheckedChanged="cboptions_CheckedChanged" />
</td>

<asp:Button ID="submit" runat="server" Text ="addition" onclick="Button_Click"/>

Код:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack == true)
    {
        Response.Write("Page is posted back");
    }
}
protected void cboptions_CheckedChanged(object sender, EventArgs e)
{
    submit.Enabled = cboptions.Checked;
}
protected void submit_Click(object sender, EventArgs e)
{
    int a = Convert.ToInt32(txtFirst.Text);
    int b = Convert.ToInt32(txtSecond.Text)+a;
    result.Text = b.ToString();
}

1 ответ

Решение

В вашем коде было много ошибок форматирования, сделайте это так

Aspx

 <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
<asp:TextBox ID="txtSecond" runat="server"></asp:TextBox>
<asp:Label ID="result" runat="server"></asp:Label>
<asp:CheckBox ID="cboptions" runat="server" AutoPostBack="True" 
  onCheckedChanged="cboptions_CheckedChanged" />
<asp:Button ID="btn" runat="server" Text ="addition" onclick="Button_Click"/>

C#

 protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == true)
            {
                Response.Write("Page is posted back");
            }
        }

        protected void cboptions_CheckedChanged(object sender, EventArgs e)
        {
            btn.Enabled = cboptions.Checked;
        }
        protected void Button_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(txtFirst.Text);
            int b = Convert.ToInt32(txtSecond.Text) + a;
            result.Text = b.ToString();
        }

Это нормально, но если я добавлю ClientClick="return true", он не сработает.

 <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
<asp:TextBox ID="txtSecond" runat="server"></asp:TextBox>
<asp:Label ID="result" runat="server"></asp:Label>
<asp:CheckBox ID="cboptions" runat="server" AutoPostBack="True" 
  onCheckedChanged="cboptions_CheckedChanged" OnClick="return true;"/>
<asp:Button ID="btn" runat="server" Text ="addition" onclick="Button_Click"/>

Почему?!

Другие вопросы по тегам