【问题标题】:asp.net linkbutton in updatepanel doesn't fire更新面板中的 asp.net 链接按钮不会触发
【发布时间】:2013-10-23 19:01:50
【问题描述】:

我有一个 asp.net 网络应用程序。在我的 .aspx 页面中,我有一个更新面板,其中有 3 个 asp:LinkButton 应该调用后面的 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 上搜索,但找不到解决方案。

【问题讨论】:

    标签: c# asp.net updatepanel linkbutton asplinkbutton


    【解决方案1】:

    你很亲密。几件事:

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

    这是一个工作示例。

    Web 表单 - 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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多