Asp.net onclick函数对标记不起作用



我有这个aspx代码

<form id="form1" runat="server">
        <div id="tabs">
            <ul>
                <li><a href="#tabs-1" >Today</a></li>
                <li><a href="#tabs-2" runat="server" onclick="TodayTab_Click">Tomorrow</a></li>
                <li><a href="#tabs-3">Any Date</a></li>

虽然我已经使用了onclick函数,但这个函数没有被触发,

为什么吗?7

这是函数,我在上面设置了一个断点

protected void TodayTab_Click(object sender, EventArgs e) {
            int i = 9;
            i++;
        }

edit2

你们告诉我,我必须把我的a标签改为asp:Hyperlink,我做到了,但功能仍然没有被触发。

这是更新后的代码

<form id="form1" runat="server">
        <div id="tabs">
            <ul>
                <li><a href="#tabs-1" >Today</a></li>
                <li><asp:Hyperlink href="#tabs-2" runat="server" onclick="TodayTab_Click">Tomorrow</asp:Hyperlink></li>
                <li><a href="#tabs-3">Any Date</a></li>

您应该使用<asp:LinkButton>控件-这是代替<a runat="server"><asp:HyperLink>

<asp:LinkButton>将根据您的要求使用OnClick事件处理程序。

(顺便说一下,如果需要执行任何客户端处理,请使用OnClientClick属性在呈现的控件上生成onclick属性)

结果是这样的:

<asp:LinkButton runat="server" onclick="TodayTab_Click" Text="Tomorrow" />

你需要使用onServerClick函数而不是onClick

onServerClick="TodayTab_Click"

我建议使用<asp:linkbutton>,它有一个服务器端点击事件。但是导航将不得不在javascript中处理,手动导航到href中的标签。(我不推荐这种方法,因为你不需要完整的回发)

请记住,这将做一个完整的回发,如果你不想要一个完整的刷新,将需要一个更新面板。

或者继续使用标准的超链接按钮,但是有一个处理服务器端所需操作的pagememethod,并通过ajax调用它。我推荐这种方法,因为您可以100%地保持在客户端,因为您的服务器端只需要依赖于向服务器发送很少的数据。