【问题标题】:My checkbox in asp.net doesn't work with the codebehind file我在 asp.net 中的复选框不适用于代码隐藏文件
【发布时间】:2015-09-19 22:07:52
【问题描述】:

我有一个复选框,它应该转到代码隐藏文件中的一个方法。 这是我的 aspx 代码:

<input name="fullscreen_chbx" type="checkbox" id="fullscreen_chbx"  onclick="fullscreen_chbx_Click" runat="server"/>

这是我的代码隐藏代码。代码应该可以工作,但它甚至不执行该方法。

protected void fullscreen_chbx_Click(object sender, EventArgs e)
{
    bool fullscreen = false;


    if (fullscreen == false)
    {
        InputSimulator.SimulateKeyPress(VirtualKeyCode.F11);
    }
    else
    {
        InputSimulator.SimulateKeyPress(VirtualKeyCode.F11);


    } 

aspx 文件中始终存在此错误:JavaScript 中的运行时错误:“fullscreen_chbx_Click”未定义。 为什么javascript会出错?

【问题讨论】:

  • 您的 fullscreen_chbx_Click 被视为 HTML 中的 JS 函数。这是因为您没有使用服务器端控件。
  • 这不是它的工作原理。您不能直接从 JavaScript 调用后端方法。
  • @MattRowland 但我使用了 runat="server"。不行吗?
  • 服务器不理解 HTML &lt;input&gt; 控件是什么。查看@TimBJames 的答案。

标签: javascript c# asp.net checkbox


【解决方案1】:

AutoPostBack="True"

仅当复选框的 AutoPostBack 属性指定为“true”时才会引发复选框控件的事件。

【讨论】:

  • 你没有使用 asp 控件,所以它不起作用你需要触发 onclient click 属性来调用 javascript 函数
【解决方案2】:

您没有使用服务器端控件,因此onclick 事件正在尝试触发 JavaScript 事件。

您可以更改代码以使用服务器端控件,例如

<asp:CheckBox id="fullscreen_chbx" OnCheckedChanged="fullscreen_chbx_Click" runat="server"/>

请注意,ServerSide 控件没有onclick 事件处理程序,因此您需要使用OnCheckedChanged。您可能还希望将AutoPostBack="True" 添加到您的控件中,以便立即触发事件。

<asp:CheckBox id="fullscreen_chbx" OnCheckedChanged="fullscreen_chbx_Click" runat="server" AutoPostBack="True" />

然后这将触发您的服务器事件。如果您想为此添加客户端事件,则可以随时添加OnClientClick="somefunction();"

【讨论】:

  • 这是我的代码,但仍然是同样的错误
  • 使用OnCheckedChanged
  • asp:checkbox 是对的,但我没有包含自动回发
  • 是的,也许也是因为这个
【解决方案3】:

把你的代码改成这个

<input name="fullscreen_chbx" type="checkbox" id="fullscreen_chbx"  onclick="fullscreen_chbx_Click" runat="server"/>

到这里

<asp:CheckBox id="fullscreen_chbx" OnClick="fullscreen_chbx_Click" runat="server"/>

【讨论】:

    【解决方案4】:

    这是因为您使用的是 HTML 控件,它不是服务器端控件。

    要在服务器端使用复选框,您需要添加以下代码。

     <asp:CheckBox ID="fullscreen_chbx" runat="server" AutoPostBack="True"
    oncheckedchanged="fullscreen_chbx_CheckedChanged" />
    
    protected void fullscreen_chbx_CheckedChanged(object sender, EventArgs e)
    {
            if (fullscreen_chbx.Checked)
            {
    
            }
            else
            {
    
            }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2011-12-09
      • 2014-09-13
      相关资源
      最近更新 更多