Нажатие кнопки запускает полный постбэк при первом нажатии

Несмотря на то, что я поместил свой asp:Button внутри UpdatePanel, он все равно вызывает постбэк на полную страницу при первом нажатии. Кроме того, событие OnClick не перехватывается при первом нажатии кнопки, но каждый раз после этого все работает нормально.

Есть идеи, что может быть причиной этой проблемы? Смотрите код ниже.

(В моем файле Site.Master)

<asp:ScriptManager runat="server" AjaxFrameworkMode="Enabled" EnablePartialRendering="true" ValidateRequestMode="Disabled">
</asp:ScriptManager>

(На моей реальной веб-странице)

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Editor.aspx.cs" Inherits="Technology.WebForm1"
validateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

<textarea id="htmlTexarea" runat= "server" style="height: 90%"></textarea>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="testBtn" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <asp:Button ID="testBtn" style="" runat="server" ClientIDMode="Static" OnClick="testBtn_Click" UseSubmitBehavior="false" />
    </ContentTemplate>
</asp:UpdatePanel>
</asp:Content>

Мой код на C#:

protected void Page_Init(object sender, EventArgs e) {
        testBtn.Click += testBtn_Click;
    }
protected void Page_Load(object sender, EventArgs e)
    {
    }
protected void testBtn_Click(object sender, EventArgs e)
    {
        String test = "Helloworld";
    }

Есть что-то, что я пропустил или сделал неправильно?

РЕДАКТИРОВАТЬ: я добавил следующее в код C# позади:

 protected void Page_Load(object sender, EventArgs e)
    {
        //Should return POST, returns GET on first click
        String test = Request.HttpMethod;
        if (!IsPostBack)
        {
            //stops here first time
            String hello = "Hello world";
        }
        else { 
            //should stop here
            String hello = "Hello world";
        }
    }

При первом нажатии кнопки сервер получает запрос GET и IsPostBack возвращает false, не меняя ничего, каждый второй щелчок отправляет запрос POST и IsPostBack правда. Кто-нибудь знает, что может быть причиной этого?

1 ответ

Решение

Проблема была вызвана тем, что я переходил с другой страницы на эту страницу, используя Server.Transfer(...)Я не совсем уверен, как, но это повлияло на POST-запрос, отправленный страницей в первый раз, но после перезагрузки страницы после запроса все заработало. На своей главной странице я изменил код Response.Redirect(...) и теперь работает отлично. Извиняюсь, если это не самое ясное объяснение, но, если честно, я не совсем уверен, почему это решило проблему, если кто-то мог бы уточнить, что происходит в комментариях, я бы очень признателен.

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