c# - updatepanel 中的 asp.net 链接按钮不触发

标签 c# asp.net updatepanel linkbutton asplinkbutton

我有一个 asp.net 网络应用程序。在我的 .aspx 页面中,我有一个更新面板,其中有 3 个 asp:LinkBut​​ton 应该调用后面的 c# 代码。问题是 onclick 不起作用。

代码如下:

<div id="div1">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>
                        <ul>
                            <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Link1</asp:LinkButton></li>
                            <li><asp:LinkButton ID="lnk_2" runat="server" OnClick="lnk2_Click">Link2</asp:LinkButton></li>
                            <li><asp:LinkButton ID="lnk_3" runat="server" OnClick="lnk3_Click">Link3</asp:LinkButton></li>
                        </ul> 
<div> some more code here </div>
</ContentTemplate>
                    <Triggers>
                        <asp:PostBackTrigger ControlID="lnk_1" />
                        <asp:PostBackTrigger ControlID="lnk_2" />
                        <asp:PostBackTrigger ControlID="lnk_3" />
                    </Triggers>
                </asp:UpdatePanel>
            </div>

代码有什么问题?我也尝试过使用 AsyncPostBackTrigger 但仍然不起作用。

后面的代码根本没有被调用。

我也尝试过在 Google 上搜索但找不到解决方案。

最佳答案

你非常接近。几件事:

  • 您的触发器应该是您所说的 AsyncPostBackTriggers。
  • 您的触发器需要一个事件名称。
  • 建议:这不会阻止您的事件触发,但除非您希望每个可发布事件都引起回发,否则请将 UpdateMode="Conditional"添加到您的 UpdatePanel。

这是一个工作示例。

网络表单 - WebForm1.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AspDotNetStorefront.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager runat="server"></asp:ScriptManager>
            <div id="div1">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                        <ul>
                            <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Never clicked</asp:LinkButton></li>
                        </ul> 
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="lnk_1" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
            </div>    
        </form>
    </body>
</html>

代码隐藏 - WebForm1.aspx.cs:

using System;

namespace AspDotNetStorefront
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        private static int _clickedCount = 0;

        protected void lnk1_Click(object sender, EventArgs e)
        {
            ++_clickedCount;
            var suffix = _clickedCount <= 1 ? "time" : "times";
            lnk_1.Text = string.Format("Clicked {0} {1}", _clickedCount, suffix);
        }
    }
}

关于c# - updatepanel 中的 asp.net 链接按钮不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550203/

相关文章:

c# - MSI 中的 CAB 文件安装

c# - 获取 FrameworkElement 边界矩形的坐标

c# - 带有子选择的 EF Core 5.0 联合 Linq 查询不起作用

asp.net - 亚特实验室 CI : how to load vars from JSON file

带有 DropDownList 的 ASP.Net 自定义验证器控件

asp.net - 在更新面板外部注入(inject) JavaScript

c# - 在 F# 中使用 C# 流利库

javascript - 使用javascript使面板可见

c# - ASP.NET 在另一个客户端上更新 UpdatePanel

javascript - 检索 Updatepanel 是否已进行回发