【问题标题】:OnClientClick event not firingOnClientClick 事件未触发
【发布时间】:2012-02-17 16:47:21
【问题描述】:

在我正在构建的网页中,我需要默认隐藏一个 div,并在用户单击链接按钮时显示它。这是链接按钮和以下 div 的代码:

    <asp:LinkButton runat="server" Text="Words & stuff go here"
        OnClientClick="button_Click"></asp:LinkButton>

    <div id="Calculator" runat="server" visible="false">
        //CODE GOES IN HERE 
    </div>

这里是链接按钮的cs文件中的代码:

void button_Click(object sender, EventArgs e)
    {
        if (Calculator.Visible)
            Calculator.Visible = false;

        else if (!Calculator.Visible)
            Calculator.Visible = true;
    }

我在后面的代码里面有个断点,我调试的时候断点也没有,也不知道是什么原因。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    客户端点击是针对客户端事件。您必须使用 onClick="button_Click" 才能使其工作。

    【讨论】:

      【解决方案2】:

      ASP .NET 控件的OnClientClick 属性引用客户端函数,这意味着它将尝试调用 JavaScript 函数。

      您有两种选择来修复您的代码。

      选项 1:
      如果您希望按钮执行Postback 并在您的.cs 文件中调用您的button_Click 函数,您可以将您的按钮代码更改为:

      <asp:LinkButton runat="server" Text="Words & stuff go here" OnClick="button_Click"></asp:LinkButton>
      

      选项 2:
      如果您想使用OnClientClick,您可以执行类似于以下的操作(在您的.aspx 文件中):

      <script type="text/javascript">
      function button_Click() {
        var calculator_id = '<%= Calculator.ClientID %>';
        var calculator = document.getElementById(calculator_id);
        if (calculator.style.display == 'none') {
          calculator.style.display = 'block';
        } else {
          calculator.style.display = 'none';
        }
      }
      </script>
      

      【讨论】:

      • 最初尝试使用 OnClick 事件在后面的代码中有 button_Click 事件时给了我一个错误,但是在将其放入脚本标记中的 th aspx 文件后,使用 OnClick 代替 OnClientClick完美运行,谢谢!
      【解决方案3】:

      OnClientClick 期望 button_Click 事件在页面上的 javascript 中定义,而不是在代码隐藏中的 C# 中。

      this

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多