2010-02-08 19 views
2

我試圖使用UpdatePanel,但無法使部分頁面更新正常工作。UpdatePanel不會執行部分頁面更新,並且IsInAsyncPostBack始終爲假

當我看到ScriptManager的IsInAsyncPostBack財產,它總是假的。

下面是重現問題的頁面。它有一個ScriptManager,一個UpdatePanel,更新面板中的LinkBut​​ton,以及一個通過Triggers集合連接到UpdatePanel的Button。

<%@ Page Language="C#" %> 
<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     Label1.Text = DateTime.Now.ToString(); 

     if (IsPostBack) 
      Label1.Text += " - Postback!"; 
     if (ScriptManager1.IsInAsyncPostBack) 
      Label1.Text += " - Async!"; 
    } 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<body> 
    <form id="form1" runat="server"> 
      <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" /> 

      <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
       <ContentTemplate>Panel 1:<asp:Label runat=server ID=Label1 /><br /> 
       <asp:LinkButton runat=server ID="LinkButton1" Text="Update!"></asp:LinkButton></ContentTemplate> 
       <Triggers><asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /></Triggers> 
      </asp:UpdatePanel> 
      <asp:Button ID="Button1" Text="Refresh Panel 1" runat="server" UseSubmitBehavior=false /> 

    </form> 
</body> 
</html> 

如果我運行此代碼,然後單擊任一按鈕,我看到了「第1小組:2010/2/8下午3時38分41秒 - 回傳」

我預計,點擊任一按鈕將導致對UpdatePanel1一個部分頁面更新,這IsInAsyncPostBack將是真實的,那!「 - 異步」將被附加到Label1。

任何想法爲什麼IsInAsyncPostBack總是假?

+0

如果調試它,多少次,當你點擊任一按鈕在Page_Load被打中?只是在黑暗中拍攝... – Jagd 2010-02-09 00:17:57

+0

只有一次,賈格德。 OMG! – 2010-02-09 18:55:43

回答

9

web.config文件有< xhtmlConformance mode =「Legacy」/ >。設置傳統模式時,部分頁面更新不起作用。 (事實上​​,他們失敗默默 - BOO嘶嘶聲!)

的模式改變爲過渡解決這個問題。

http://weblogs.asp.net/scottgu/archive/2006/12/10/gotcha-don-t-use-xhtmlconformance-mode-legacy-with-asp-net-ajax.aspx

+0

OMG!這個舊帖子保存了一天,在過去的2天,我一直無法理解爲什麼舊的Web應用上的UpdatePanel失敗... – 2014-08-27 11:51:51

+0

我印象深刻!微軟真的被用來做簡單的事情非常複雜(Ajax + PHP從未如此奇怪)!這工作現在,謝謝。 – Elo 2016-02-18 15:57:02