如何从无序列表项调用代码隐藏代码

本文关键字:代码 调用 隐藏 列表 无序 | 更新日期: 2023-09-27 18:21:28

<ul runat="server" id="ulDrop">
    <li>Update?</li>
    <li>
        <asp:DropDownList ID="yesno" ClientIDMode="Static" runat="server">
            <asp:ListItem>YES</asp:ListItem>
            <asp:ListItem>NO</asp:ListItem>
        </asp:DropDownList>
    </li>
    <li runat="server" id="liDrop" onclick="logout_Click"><span class="ondrop">Logout</span></li>
</ul>

我正在尝试从代码隐藏处理LI的 onclick 方法,因此我添加了以下 C# 代码:

public void logout_Click(object sender, EventArgs e)
{
    Session.RemoveAll();
    Response.Redirect("log-in.aspx");
}

它一直给我一个错误,找不到该功能。

我希望在单击"注销"时清除 asp.net 页面中设置的所有会话,不仅是文本,还有整个LI并重定向到另一个页面。

请帮我解决问题

如何从无序列表项调用代码隐藏代码

我更喜欢马库斯的答案(添加一个服务器控件"LinkButton"(。但是,如果您想保留 LI 并且仍然调用服务器端方法,作为解决方法,您可以执行以下操作:

向窗体添加隐藏按钮。

<asp:button id="btnId" OnClick="logout_Click" style="display:none"></asp:button>

将您的 LI 更改为

<li id="liDrop" onclick="logout();"><span class="ondrop">Logout</span></li>

爪哇语

function logout()
{
   document.getElementById('<%= btnId.ClientID %>').click();
}

ASP.NET 代码中的logout_Click方法在服务器上运行。li 标记上的 onclick 属性是指在客户端上运行的名为 logout_Click 的 JavaScript 函数。

为了在服务器上运行代码,您需要对服务器执行回发。若要对此进行测试,可以按如下方式更改 ASPX 代码(这可能会引入一些设计更改,之后必须修复这些更改(:

<li id="liDrop">
     <asp:LinkButton runat="server" 
                    OnClick="logout_Click" 
                    Text="LogOut" />
</li>

这将添加一个 LinkButton 控件,该控件回发到服务器,以便运行 logout_Click 方法。

li 元素 -

即使使用 runat="server" - 仍然是一个 HTML 元素。当您使用该元素的 onclick-Attribute 时,它会将其视为对客户端 JavaScript-函数(未定义(的调用。

隐藏的代码是服务器端的,不能从 HTML 元素执行。您需要 ASP 元素才能正常工作。