Панели обновления Ajax.net не работают на Mozilla Firefox - PullRequest
1 голос
/ 27 января 2010

Не знаю почему, но при выполнении обратной передачи для элемента управления для обновления 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 ]

0 голосов
/ 27 января 2010

Попробуйте установить для параметра UpdateManue UpdateMode значение Conditional.

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

0 голосов
/ 27 января 2010

Вероятно, это не совсем работает в IE.

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

...