尽管我的链接按钮是通过更新面板触发的,但为什么我的链接按钮会完整回发

时间:2012-12-20 09:51:21

标签: c# asp.net ajax updatepanel linkbutton

我有以下情况:

通过link button触发的AsyncPostBackTrigger。但仍然会发回完整的帖子!!


<asp:LinkButton ID="lbtnShowNotes" runat="server" CssClass="blue" OnClick="lbtnShowNotes_Click"> <img src="images/document_notes.png"/>notes</asp:LinkButton>

  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Panel ID="pnlNotes" runat="server" Visible="false">
                        <asp:Label ID="lbl_title" runat="server" Text="الملاحظات"></asp:Label>
                        <asp:TextBox ID="txt_Coments" runat="server" Columns="70" Rows="5" TextMode="MultiLine"></asp:TextBox>
                        <asp:LinkButton ID="lbtnOkNotes" runat="server"><img src="images/tick.png" alt=""/></asp:LinkButton>
                        <asp:LinkButton ID="lbtnCancelNotes" runat="server" CausesValidation="False" OnClick="lbtnCancelNotes_Click"><img src="images/tick.png" alt=""/></asp:LinkButton>
                    </asp:Panel>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="lbtnShowNotes" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>

3 个答案:

答案 0 :(得分:5)

ClientIDMode更改

ASP.NET 4中的ClientIDMode设置允许您指定ASP.NET如何为HTML元素生成id属性。在以前版本的ASP.NET中,默认行为等同于ClientIDMode的AutoID设置。但是,默认设置现在是可预测的。

如果使用Visual Studio 2010从ASP.NET 2.0或ASP.NET 3.5升级应用程序,该工具会自动向Web.config文件添加一个设置,以保留早期版本的.NET Framework的行为。但是,如果通过将IIS中的应用程序池更改为以.NET Framework 4为目标来升级应用程序,则ASP.NET默认使用新模式。要禁用新的客户端ID模式,请在Web.config文件中添加以下设置:

<pages ClientIDMode="AutoID" />

或在页面指令中添加ClientIDMode =“AutoID”。

http://www.asp.net/whitepapers/aspnet4/breaking-changes

LinkButton in ListView in UpdatePanel causes full postback

答案 1 :(得分:4)

在我的页面指令中添加ClientIDMode="AutoID"解决了我的问题。

答案 2 :(得分:2)

UpdatePanel的{​​{3}}更改为“有条件”。

<asp:UpdatePanel UpdateMode="Conditional" ID="UpdatePanel1" runat="server">

如果UpdatePanel属性设置为UpdateMode,则Conditional会更新,并且会出现以下某种情况:

  • 您可以显式调用UpdatePanel控件的Update方法。
  • 回发是由通过使用UpdatePanel控件的触发器属性定义为触发器的控件引起的。在此方案中,控件显式触发面板内容的更新。控件可以位于内部,也可以位于定义触发器的UpdatePanel 控件之外。
  • ...