ASP.NET中如何将指定按钮排除出UpdatePanel的异步更新范围
ASP.NET UpdatePanel指定按钮排除异步回发解决方案
该需求完全可以实现,你可以通过以下两种常用方式实现将btnKaydet按钮排除在异步更新触发范围之外,让它触发全页回发:
方法1:前台声明PostBackTrigger(推荐,无需写后台代码)
直接在UpdatePanel控件内添加<Triggers>节点,注册btnKaydet为全页回发触发器即可,修改后的UpdatePanel代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <!-- 原有内容保持不变 --> <div class="row contact-person"> <div class="d-grid gap-2 d-md-flex mt-3 yerlestir"> <asp:LinkButton ID="lbYetkiliEkle" CssClass="btn btn-danger" runat="server" OnClick="lbYetkiliEkle_Click"><span><i class="fas fa-user-plus"></i></span>Yetkili Ekle</asp:LinkButton> <div> <button class="btn btn-primary me-md-2" type="button">Vazgeç</button> <div class="btn-group"> <asp:Button ID="btnKaydet" CssClass="btn btn-danger" runat="server" Text="Kaydet" ValidationGroup="unvan" OnClick="btnKaydet_Click" /> <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> <span class="visually-hidden">Toggle Dropdown</span> </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Kaydet ve Yeni Ekle</a></li> </ul> </div> </div> </div> </div> </ContentTemplate> <!-- 新增Triggers节点 --> <Triggers> <asp:PostBackTrigger ControlID="btnKaydet" /> </Triggers> </asp:UpdatePanel>
方法2:后台注册回发控件
如果你的按钮是动态生成的,或者需要根据条件控制是否走全页回发,可以在页面的Page_Load事件中添加以下代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 其他初始化逻辑 } // 注册btnKaydet为全页回发控件 ScriptManager.GetCurrent(this).RegisterPostBackControl(btnKaydet); }
两种方案对比
- 声明式Triggers写法简单,逻辑直观,适合固定控件的场景
- 后台注册方式灵活性更高,适合动态控件、条件控制的场景
内容的提问来源于stack exchange,提问作者Mehmet Akif
相关产品推荐
相关产品推荐

