我有一个链接按钮,在点击时不会给出回复。这是代码
<script type="text/javascript">
$(function () {
$('#divTabs').tabs({
show: function () {
var sel = $('#divTabs').tabs('option', 'selected');
$('#<%= hfLastTab.ClientID %>').val(sel);
},
selected: '<%= hfLastTab.Value %>'
});
});
</script>
<div id="divTabs">
<ul>
<li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" runat="server" OnClick="TabLink1_Click" > Link1 </asp:LinkButton></li>
<li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server" OnClick="TabLink2_Click"> Link2 </asp:LinkButton></li>
<li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server" OnClick="TabLink3_Click"> Link3 </asp:LinkButton></li>
</ul>
....
</div>
背后的代码:
protected void TabLink1_Click(object sender, System.EventArgs e)
{
SelectTopBar();
SetSelectTab("TabBar1");
}
protected void TabLink2_Click(object sender, System.EventArgs e)
{
SelectTopBar();
SetSelectTab("TabBar2");
}
protected void TabLink3_Click(object sender, System.EventArgs e)
{
SelectTopBar();
SetSelectTab("TabBar3");
}
我尝试将断点放在代码隐藏中并且没有命中。该页面也不会刷新。如果我使用<asp:Button>
,那么它将进行提交,一切似乎都没问题。
我还试图查看是否有多个<form>
标签,但没有。
我还确保在aspx页面中,这些点击事件是相互关联的。
[编辑]:链接按钮位于jquery选项卡内。因此,不使用jquery示例中的普通<a href...
,而不使用任何回发,我使用了asp linkbutton并希望回发。
有什么想法吗?
答案 0 :(得分:1)
万一其他人在寻找。 LinkButton OnClick事件没有触发时遇到了同样的问题,只需使用“OnCommand =”而不是“OnClick =”修复它。
答案 1 :(得分:0)
您是否尝试将responseredirect包含为每个事件的最后一行,如下例所示?
protected void TabLink1_Click(object sender, System.EventArgs e)
{
SelectTopBar();
SetSelectTab("TabBar1");
Response.Redirect(Request.Url.AbsoluteUri);
}
答案 2 :(得分:0)
找到一些解决方法。我在<div id="divTabs">
之外定义了另一个链接按钮,<div id="divTabs">
内的链接按钮将调用外部链接按钮。所以代码变得像
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="TabLink1_Click" ></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" OnClick="TabLink2_Click" ></asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" OnClick="TabLink3_Click" ></asp:LinkButton>
<div id="divTabs">
<ul>
<li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" runat="server"> Link1 </asp:LinkButton></li>
<li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server"> Link2 </asp:LinkButton></li>
<li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server"> Link3 </asp:LinkButton></li>
</ul>
....
</div>
在后面的代码中,在Page_Load
函数
TabLink1.OnClientClick = "document.getElementById('" + LinkButton1.ClientID + "').click();";
TabLink2.OnClientClick = "document.getElementById('" + LinkButton2.ClientID + "').click();";
TabLink3.OnClientClick = "document.getElementById('" + LinkButton3.ClientID + "').click();";
我猜测jQuery库可能会产生一些影响,导致链接没有调用回发,所以我使用上面的解决方法。
答案 3 :(得分:0)
<script type="text/javascript">
$(function () {
$('#divTabs').tabs({
show: function () {
var sel = $('#divTabs').tabs('option', 'selected');
$('#<%= hfLastTab.ClientID %>').val(sel);
},
selected: '<%= hfLastTab.Value %>'
});
});
</script>
<div id="divTabs">
<ul>
<li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" CauseValidation="false" runat="server" OnClick="TabLink1_Click" > Link1 </asp:LinkButton></li>
<li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server" CauseValidation="false" OnClick="TabLink2_Click"> Link2 </asp:LinkButton></li>
<li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server" CauseValidation="false" OnClick="TabLink3_Click"> Link3 </asp:LinkButton></li>
</ul>
....
</div>
&#13;
使用CausesValidation =&#34; false&#34;
答案 4 :(得分:0)
如果有人在寻找实际可行的解决方案,那是因为你在某种程度上摆弄了javascript并且这会覆盖.NET回发行为。
在我的情况下,它只是使用Bootstrap并将data-toggle="buttons"
e.markup添加到按钮组,如:
<div class="btn-group btn-group-sm btn-group-justified" data-toggle="buttons">
Bootstrap JavaScript认可了这一点,因为它需要在组中观察这些按钮才能正确显示其切换状态(即向/从子级添加/删除“活动”类)。
解决方案:删除了数据切换,并使用一些C#内联代码实现了切换状态突出显示。
答案 5 :(得分:-1)
也许这是.NET框架的错,
对我来说__doPostBack
并不适用于所有页面,因为我使用较新版本的Visual Studio编译了我的项目。我改变了#34;目标框架&#34;来自&#34; .NET framework 4.0 &#34;到&#34; .NET framework 3.0 &#34;,然后在那个重建项目之后就已经有效了。