首页 文章

AsyncPostBackTrigger未更新更新面板

提问于
浏览
0

我在ASP.NET(.ascx文件)中的用户控件中使用更新面板 . 下面是我的HTML标记

<asp:ScriptManager EnablePartialRendering="true"
                   ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div>        
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" >
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Update Panel" OnClick="Button1_Click" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"> </asp:AsyncPostBackTrigger> </Triggers> </asp:UpdatePanel> </div>

这是我的代码隐藏

public partial class sample: System.Web.UI.Control
{
    protected void Button1_Click(object sender, EventArgs e)
    {

        Label1.Text = DateTime.Now.ToLongTimeString();
        UpdatePanel1.Update();
    }

}

如果我使用PostBackTrigger,那么它工作正常但回发整个页面(这是我不想要的)我只需要刷新更新面板 .

这是我的aspx页面标记(它是Sitecore驱动的网站,所以所有的子布局都加载到Sitecore占位符)

<form id="form2" runat="server">
    <section class="page">
        <sc:Placeholder runat="server" ID="mainPlaceholder" Key="content" />
    </section>
</form>

对不起,由于某些安全原因,无法发布整个页面

谢谢

3 回答

  • 0

    一些事情要尝试 . (这对我来说可以 . )

    • 确保没有2个脚本管理器,一个在页面上,另一个在控件上 . aspx页面上的一个就足够了 .

    • 从aspx页面删除用户控件并再次添加用户控件 . 将用户控件拖到aspx页面以确保它已在页面顶部注册 .

    • 删除触发器;你不需要它们 .

    您还设置了一些等于默认值的属性,因此您可以删除它们:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Update Panel" OnClick="Button1_Click" /> </ContentTemplate> </asp:UpdatePanel> protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToLongTimeString(); //UpdatePanel1.Update(); }
  • 0

    最后,我找到了解决此问题的解决方案 . 我的整个HTML标记仍然相同,只需要评论或取消触发器 . 我只是评论了标签的内部HTML,它一切按预期工作 .

  • -1

相关问题