Панели обновления Ajax.net не работают на Mozilla Firefox

Не знаю почему, но при создании обратной передачи для элемента управления для обновления ajax updatePanel он фактически выполняет полную обратную передачу страницы, он отлично работает в IE, однако с mozilla он перезагружает всю страницу.

<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 имеет значение true, и оно просто проверяет, существует ли пользователь или является действительным, и отображает сообщение на одной метке на панели обновлений.

Вот код события, которое вызывает текстовое поле:

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;
    }        
}

2 ответа

Попробуйте установить параметр UpdateMan в UpdateMode как условный.

Я вижу то же самое, что и вы - постбэк в Chrome и Firefox, но не в IE (все последние версии). Может быть, IE просто прекрасно играет без указания режима обновления, где вам, возможно, придется быть более явным с другими браузерами.

Это, вероятно, не очень работает в IE.

Вам необходимо установить параметр EnablePartialRendering в вашем ScriptManager.

Другие вопросы по тегам