C# 如何从无序列表项调用代码隐藏代码
它不断地给我一个错误,函数找不到 我希望在单击“注销”时清除asp.net页面中的所有会话集,不仅仅是文本,而是整个C# 如何从无序列表项调用代码隐藏代码,c#,asp.net,drop-down-menu,code-behind,C#,Asp.net,Drop Down Menu,Code Behind,它不断地给我一个错误,函数找不到 我希望在单击“注销”时清除asp.net页面中的所有会话集,不仅仅是文本,而是整个LI,并重定向到另一个页面 请帮助我解决此问题li元素-即使使用runat=“server”-仍然是HTML元素。当您使用该元素的onclick属性时,它会将其视为对客户端JavaScript函数(未定义)的调用 隐藏的代码是服务器端的,不能从HTML元素执行。您需要ASP元素才能工作。服务器上运行ASP.NET代码中的注销\u单击方法。li标记上的onclick属性指的是在客户端
LI
,并重定向到另一个页面
请帮助我解决此问题li元素-即使使用runat=“server”-仍然是HTML元素。当您使用该元素的onclick属性时,它会将其视为对客户端JavaScript函数(未定义)的调用
隐藏的代码是服务器端的,不能从HTML元素执行。您需要ASP元素才能工作。服务器上运行ASP.NET代码中的
注销\u单击方法。li
标记上的onclick
属性指的是在客户端上运行的名为logout\u Click
的JavaScript函数
为了在服务器上运行代码,您需要回发到服务器。为了测试这一点,您可以如下更改您的ASPX代码(这可能会引入一些设计更改,您必须在以后进行修复):
控件,以便运行注销\u Click
方法。我更喜欢Marcus的答案(添加服务器控件“LinkButton”)。但是,如果您希望保留LI并仍然调用服务器端方法,作为解决方法,您可以执行以下操作:
在表单中添加隐藏按钮。
<li id="liDrop">
<asp:LinkButton runat="server"
OnClick="logout_Click"
Text="LogOut" />
</li>
将您的LI更改为
<asp:button id="btnId" OnClick="logout_Click" style="display:none"></asp:button>
注销
Javascript
<li id="liDrop" onclick="logout();"><span class="ondrop">Logout</span></li>
函数注销()
{
document.getElementById(“”)。单击();
}
我不确定您是否在webforms应用程序或MVC中,但您需要一个可以进行onclick的元素。锚或链接按钮可以工作,只需将其放入列表项中。很遗憾,我无法将dropdownlist嵌套在dropdownlist中。看到Markus的答案,他解释得更详细一些。它只是在不执行代码的情况下重新加载页面:/answer已更新。确保获取按钮的客户端id。我使用了CliendIDMode=“Static”
,然后还分配了一个CssClass
,并修改了代码,代码正常工作。非常感谢。
<asp:button id="btnId" OnClick="logout_Click" style="display:none"></asp:button>
<li id="liDrop" onclick="logout();"><span class="ondrop">Logout</span></li>
function logout()
{
document.getElementById('<%= btnId.ClientID %>').click();
}