我有以下菜单:
<header class="logged-in clearfix" runat="server" id="hdrLoggedIn" visible="false">
<div class="container">
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li runat="server" ID="liLoggedIn"><asp:LinkButton runat="server" ID="btnLoggedIn" OnClick="btnLoggedIn_Click" CausesValidation="false" /></li>
<li runat="server" ID="liChangePwd"><asp:LinkButton runat="server" ID="btnChangePwd" Text="Change Password" OnClick="btnChangePwd_Click" CausesValidation="false" /></li>
<li runat="server" ID="liIdUpload"><asp:LinkButton runat="server" ID="btnIdUpload" Text="ID Upload" OnClick="lnkIdUpload_Click" CausesValidation="false" /></li>
<li runat="server" ID="liAdmin"><asp:LinkButton runat="server" ID="btnAdmin" Text="Admin" OnClick="btnAdmin_Click" CausesValidation="false" /></li>
<li runat="server" ID="liLogout"><asp:LinkButton runat="server" ID="btnLogout" Text="Logout" OnClick="btnLogout_Click" CausesValidation="false" /></li>
<li runat="server" ID="liUnsub"><a href="unsubscribe.aspx">Unsubscribe User</a></li>
<li runat="server" ID="liPerfMon"><a href="adminmonitor.aspx">Performance Monitor</a></li>
</ul>
</div>
</div>
</header>在开发工具中这样做:

这使我相信asp.net正在添加_doPostBack函数(除非我遗漏了一些东西,因为我没有创建这个应用程序)。
这是母版页中声明的全局标题菜单。
我的问题是,除了一个特定的页面之外,菜单在所有页面上都能正常工作。
我尝试过向Response.Write方法中添加一个onClick,但是这不会被触发,这使我相信onClick不会被触发。
如果没有被解雇,似乎最明显的可能性是_doPostBack以某种方式失败,并阻止了onClick方法的触发?
如果是这种情况,或者对任何人来说都是明智的,为什么会发生这种情况,我能做些什么来解决这个问题。
可能是页面中的某个东西不起作用,还是与_doPostBack冲突?还是别的什么?
有什么想法吗?
发布于 2015-09-22 08:52:46
分配OnClick属性时,可以为目标控件的Click事件分配事件处理程序。因此,在您的示例中,我假设您已经在后面的代码中实现了服务器方法btnChangePwd_Click。要触发此方法,必须使用POST方法将呈现的页面发送到服务器--您的页面上有表单。由于asp:LinkButton在最终的HTML中呈现为a元素,而且该元素不会触发表单的发布,因此ASP.NET呈现特殊的帮助方法__doPostBack,它是一个简单的javascript函数,它使用其输入参数(输入参数是触发回发的元素的id )将该参数设置为表单中隐藏字段的值,然后它发送表单。在服务器端,根据输入参数中提供的值,.NET知道应该调用哪个服务器函数。
因此,如果您的菜单不只是在一个特定的页面上工作,那么检查页面上是否有一些javascript错误,或者一些不匹配的html代码,这会破坏所有这些逻辑。
https://stackoverflow.com/questions/32711360
复制相似问题