OnClientClick事件未触发

时间:2012-02-17 16:47:22

标签: c# asp.net

在我正在构建的网页中,我有一个我默认需要隐藏的div,并且当用户点击链接按钮时会显示该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;
    }

我后面的代码中有一个断点,当我调试时,断点永远不会到达,我不明白为什么。

3 个答案:

答案 0 :(得分:2)

客户端点击上的

用于客户端事件。您必须使用onClick =“button_Click”才能使其正常工作。

答案 1 :(得分:1)

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

请参阅this

答案 2 :(得分:1)

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

您有两种方法可以修复您的代码。

选项1:
如果您希望按钮执行Postback并在button_Click文件中调用.cs功能,则只需将按钮代码更改为:

<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>