【问题标题】:How to call code-behind code from a unordered list item如何从无序列表项中调用代码隐藏代码
【发布时间】:2015-11-11 15:13:35
【问题描述】:
<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 并重定向到另一个页面。

请帮我解决问题

【问题讨论】:

  • 我不确定您使用的是网络表单应用程序还是 MVC,但您需要一个可以点击的元素。锚点或链接按钮都可以,只需将其放在列表项中即可。

标签: c# asp.net drop-down-menu code-behind


【解决方案1】:

我更喜欢 Marcus 的回答(添加服务器控件“LinkBut​​ton”)。但是,如果您想保留您的 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>

Javascript

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

【讨论】:

  • 它只是重新加载页面而不执行代码隐藏:/
  • 答案已更新。确保获取按钮的客户端 ID。
  • 我使用了CliendIDMode="Static",然后还分配了CssClass,并修改了代码,它正在工作。谢谢。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    后面的代码是服务器端的,不能从 HTML 元素中执行。你需要 ASP Elements 才能工作。

    【讨论】:

    • 很遗憾,我不能在下拉列表中嵌套下拉列表。
    • 看Markus的回答,他解释的更详细一点。
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多