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
true です。誰がこれを引き起こしているのか知っていますか?