0

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 リクエストを送信し、IsPostBacktrue です。誰がこれを引き起こしているのか知っていますか?

4

1 に答える 1

2

この問題は、を使用して別のページからこのページに移動したことが原因で発生して いましたServer.Transfer(...)。完全にはわかりませんが、これはページから送信された POST リクエストに最初に影響を与えていましたが、リクエスト後にページがリロードされた後すべてが機能しました。マスターページでコードを変更したところ、Response.Redirect(...)完全に機能するようになりました。これが最も明確な説明ではない場合はお詫びしますが、正直に言うと、これで問題が解決した理由はよくわかりません。コメントで何が起こっているのかを誰かが明確にすることができれば、本当に感謝しています.

于 2014-07-30T10:09:58.763 に答える