ASP.NET TextBox OnTextChanged дважды запускается в Firefox - PullRequest
1 голос
/ 04 февраля 2010

Привет, я столкнулся со странной проблемой, которая случается только в FF. У меня есть элемент управления TextBox с обработчиком OnTextChanged. Обработчик событий работает нормально большую часть времени, но когда пользователь изменил текст и нажал Enter в FF, событие OnTextChanged вызывается дважды. Я обнаружил проблему в Firebug, что первый запрос фактически отменен из-за второго события.

Test.aspx

<%@ Page Language="C#" AutoEventWireup="True" CodeFile="~/Test.aspx.cs" Inherits="T.Test" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>Custom TextBox - OnTextChanged - C# Example</title>
    </head>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:ScriptManager runat="server" ID="SM">
            </asp:ScriptManager>
            <h3>Custom TextBox - OnTextChanged - C# Example</h3>
            <asp:UpdatePanel runat="server" ID="Panel1">
                <ContentTemplate>
                    <asp:Panel runat="server" ID="Panel2">
                        <asp:TextBox ID="TextBox1" AutoPostBack="true" OnTextChanged="OnTextChanged" runat="server">Hello World!
                        </asp:TextBox>
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>
    </html>

Test.aspx.cs

using System;
using System.Web.UI;

namespace T
{
    public partial class Test : Page
    {       
        protected void OnTextChanged(object sender, EventArgs e)
        {
            var a = 0;
        }

    }
}

Установите точку останова @ var a, и вы увидите, что после изменения текста и нажатия клавиши ввода в FF (v3.5.7) событие OnTextChanged вызывается дважды.

Так что мой вопрос в том, каков наилучший способ правильно обработать событие OnTextChanged, чтобы нажатие клавиши enter в текстовом поле не вызывало двойной обратной передачи.

С уважением,

1 Ответ

2 голосов
/ 04 февраля 2010

Я не знаю, почему он изолирован от FireFox, но если вы удалите свойство AutoPostBack, это решит проблему.

Здесь также есть объяснение здесь о том, почему он отправляет сообщения дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...