【发布时间】:2014-09-19 12:03:48
【问题描述】:
尽管我已将我的 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。有谁知道是什么原因造成的?
【问题讨论】:
-
这很可能是因为
UseSubmitBehavior=false。 -
您可以通过删除触发器部分来尝试它。只需删除触发器部分并尝试一次。我从不使用触发器部分来单击 updatePanel 中的简单按钮。因此我问。同时删除 Pre_init 中添加的额外 Click 事件。不知道为什么需要这样做
-
@WiktorZychla 不,只是把那条线拿出来了,但还是不行,谢谢
-
@trelston 删除了触发器部分并注释掉了我在那里添加事件处理程序的行,但我仍然遇到同样的问题,第一次点击不起作用,之后的所有其他点击都可以
-
在同一页面上是否还有另一个 id 为 testBtn 的按钮?我也没有 AjaxFrameworkMode="Enabled" EnablePartialRendering="true" ValidateRequestMode="Disabled"。尝试删除它们并检查。
标签: c# asp.net webforms aspbutton