按钮单击会在第一次单击时触发整页回发

时间:2014-07-28 10:06:39

标签: c# asp.net webforms aspbutton

尽管事实上我已将我的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 个答案:

答案 0 :(得分:0)

问题是由于我使用Server.Transfer(...)从另一个页面转到此页面这一事实,我不完全确定如何但这会影响页面首次发送的POST请求但是一旦页面在请求一切正常后重新加载。在我的母版页中,我将代码更改为Response.Redirect(...),现在它完美无缺。抱歉,如果这不是最明确的解释,但说实话,我不太清楚为什么这解决了问题,如果有人能澄清评论中发生了什么,我真的很感激。