2010-02-08 4 views
2

Je tente d'utiliser un UpdatePanel, mais je ne parviens pas à mettre à jour les pages partielles.UpdatePanel n'effectue pas de mise à jour partielle des pages et IsInAsyncPostBack est toujours false

Lorsque je regarde la propriété IsInAsyncPostBack de ScriptManager, elle est toujours fausse.

Voici une page qui reproduit le problème. Il a un ScriptManager, un UpdatePanel, un LinkButton dans le panneau de mise à jour, et un bouton connecté au UpdatePanel via la collection Triggers.

<%@ 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> 

Si je lance ce code et cliquez sur l'un des boutons, je vois « Panel 1: 2/8/2010 15:38:41 - Postback »

Je m'attendais à ce que le fait de cliquer sur l'un ou l'autre bouton provoque une mise à jour partielle de UpdatePanel1, que IsInAsyncPostBack soit vrai et que "- Async!" serait ajouté à Label1.

Une idée de pourquoi IsInAsyncPostBack est toujours faux?

+0

Si vous déboguer, combien de fois le Page_Load se faire frapper lorsque vous appuyez sur l'un des boutons? Juste un coup dans le noir ... – Jagd

+0

Juste une fois, Jagd. –

Répondre

9

Le fichier web.config contenait < xhtmlConformance mode = "Legacy"/>. Lorsque le mode Legacy est défini, les mises à jour de page partielle ne fonctionnent pas. (En fait, ils échouent silencieusement - BOO! HISS!)

La modification du mode en transition a résolu ce problème.

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

+0

OMG! ce vieux post a sauvé le jour, au cours des 2 derniers jours j'ai été incapable de comprendre pourquoi un UpdatePanel sur une vieille application Web échoue ... –

+0

Je suis impressionné! Microsoft est vraiment utilisé pour rendre les choses simples très compliquées (Ajax + PHP n'est jamais si bizarre)! cela fonctionne maintenant, merci. – Elo

Questions connexes