2010-01-27 86 views
1

不知道爲什麼,但是當爲控件更新ajax updatePanel回發它實際上完成頁面的完整回發時,它在IE上運行正常但是使用mozilla它會重新加載整個頁面。Ajax.net更新面板不工作在Mozilla Firefox上

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:Panel ID="userLogin" Visible=false runat=server> 
    <table> 
     <tr> 
      <td colspan="2"> 
       <asp:Label ID="Label27" runat="server" style="font-weight: 700" 
        Text="Registered Users"></asp:Label> 
      </td> 
      <td class="style2"> 
       &nbsp;</td> 
      <td> 
       <asp:Label ID="Label30" runat="server" Text="New Users" 
        style="font-weight: 700"></asp:Label> 
      </td> 
      <td class="style7"> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Label ID="Label28" runat="server" Text="Email"></asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="TextBox11" runat="server" Width="160px" TabIndex="1"></asp:TextBox> 
      </td> 
      <td class="style2"> 
       &nbsp;</td> 
      <td> 
       <asp:Label ID="Label31" runat="server" Text="Email"></asp:Label> 
      </td> 
      <td class="style7"> 
       &nbsp;<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
        <ContentTemplate> 
         <asp:TextBox ID="TextBox13" runat="server" AutoPostBack="True" 
          ontextchanged="TextBox_TextChanged" TabIndex="3" Width="160px"></asp:TextBox> 
         <asp:Image ID="Image6" runat="server" ImageUrl="~/Classifieds/images/notOk.jpg" 
          Visible="False" /> 
         <asp:Image ID="Image5" runat="server" ImageUrl="~/Classifieds/images/ok.jpg" 
          Visible="False" /> 
        </ContentTemplate> 
       </asp:UpdatePanel> 

     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
        <ContentTemplate> 
         <asp:Label ID="registerErrorLabel" runat="server" ForeColor="Red"></asp:Label> 
         &nbsp;<asp:UpdateProgress ID="UpdateProgress1" runat="server"> 
          <ProgressTemplate> 
           <asp:Image ID="Image4" runat="server" 
            ImageUrl="~/Classifieds/images/ajax-loader.gif" /> 
          </ProgressTemplate> 
         </asp:UpdateProgress> 
        </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="TextBox13" EventName="TextChanged" /> 
         <asp:AsyncPostBackTrigger ControlID="TextBox15" EventName="TextChanged" /> 
         <asp:AsyncPostBackTrigger ControlID="CheckBox4" EventName="CheckedChanged" /> 
        </Triggers> 
       </asp:UpdatePanel> 

文本框的AutoPostBack是真實的,它只是檢查用戶是否存在或有效和更新面板內的一個標籤上顯示一個消息。

這裏是一個文本框觸發事件背後的代碼:

protected void TextBox_TextChanged(object sender, EventArgs e) 
{ 
    if (isEmail(TextBox13.Text)) 
    { 
     if (DB2.alreadyRegistered(TextBox13.Text)) 
     { 
      registerErrorLabel.Text = "This email has already been registered,<br/>If you forgot your password please <a href='../../../forgot.aspx' target=blank>click here</a> (will open on a new window)"; 
      registerErrorLabel.Visible = true; 
      Image5.Visible = false; 
      Image6.Visible = true; 
      TextBox13.BorderColor = System.Drawing.Color.Red; 
     } 
     else 
     { 
      registerErrorLabel.Visible = true; 
      Image5.Visible = true; 
      Image6.Visible = false; 
      TextBox13.BorderColor = System.Drawing.Color.Green; 
     }  
    } 
    else { 
     registerErrorLabel.Text = "Please use a valid email"; 
     Image5.Visible = false; 
     Image6.Visible = true; 
     TextBox13.BorderColor = System.Drawing.Color.Red; 
    }   
} 
+0

umm更新面板中沒有標籤?你是在展示其中一幅圖像,而不是顯示它是否有效? – 2010-01-27 16:37:33

+1

也只是一個建議,但你應該真的有有意義的控制ID,因爲這可能會在代碼背後變得混亂,並通過使用錯誤的控件導致一些奇怪的行爲。這可能是現在正在發生的事情,但如果沒有看到你的代碼,很難說清楚。 – 2010-01-27 16:40:32

+0

抱歉,有兩列,其中一個用於註冊用戶,另一個用於新用戶(桌子上的兩列)忘記包含第二個更新面板,一個在頂部,文本框旁邊有一個圖像,另一個位於registerErrorLabel的底部(顯示錯誤的標籤,如果有的話) – George 2010-01-27 16:45:37

回答

0

這可能不是在IE真正的工作。

您需要在ScriptManager上設置EnablePartialRendering參數。

+0

它被設置爲true,是默認值,但會嘗試在代碼中將其設置爲true ...讓我們希望它... – George 2010-01-27 16:46:21

0

嘗試將UpdatePanel的UpdateMode設置爲有條件。

我看到了同樣的東西 - Chrome和Firefox上的回傳,但不是IE(所有最新版本)。可能是因爲IE在沒有指定更新模式的情況下播放得很好,您可能需要更加明確地使用其他瀏覽器。

+0

將給它一個嘗試.. 。 – George 2010-01-28 06:30:29