服务器端的按钮单击事件未被激发
本文关键字:事件 按钮 单击 服务器端 | 更新日期: 2023-09-27 18:21:25
PFB以下代码,该代码存在于我的一个.aspx文件中。我在后面的代码中添加了一个按钮和一个方法。我已将进程附加到调试器,但按钮单击事件没有被激发。我的应用程序其余部分的一切都很好,但只有在这个屏幕上,服务器端才不会触发任何事件。如果我添加onClientClick事件,它将被激发。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Site2.Master" AutoEventWireup="true"
CodeBehind="AdminPage.aspx.cs" Inherits="RoomBook.Views.AdminPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script language="javascript" type="text/javascript">
$(function () {
var allPanels = $('.accordion > dd').hide(1000);
$('.accordion > dt > a').click(function () {
allPanels.slideUp();
$(this).parent().next().show(1000);
});
return false;
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager runat="server">
</asp:ScriptManager>
<dl class="accordion">
<dt><a href="#">Modify / Delete Room</a></dt>
<dd>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<label id="roomNumber0" class="itemLeft">
Room Name
</label>
<asp:DropDownList class="inputTextRoom" ID="ddRoomName" runat="server">
</asp:DropDownList>
<br />
<label id="Label1" class="itemLeft">
Status</label>
<asp:RadioButtonList class="radioButton" ID="rbStatus" runat="server">
<asp:ListItem Text="Active"></asp:ListItem>
<asp:ListItem Text="Deactive"></asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="btnModify" runat="server" Text="Button" OnClick="btnModify_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</dd>
</dl>
</asp:Content>
在代码背后的方法定义是:
protected void btnModify_Click(object sender, EventArgs e)
{
RoomDomain roomdomain = new RoomDomain();
string userName = (WindowsIdentity.GetCurrent().Name.ToString().Split(''''))[1];
if (!(ddRoomName.SelectedIndex == 0))
{
roomdomain.RoomName = ddRoomName.SelectedItem.Value;
if (rbStatus.SelectedItem.Value == "Active")
{
roomdomain.IsActive = true;
}
else
{
roomdomain.IsActive = false;
}
adminPage.ModifyExistingRoom(roomdomain, userName);
}
}
我试着在页面上添加了几个按钮,但都不起作用。当我附加进程时,断点会碰到其他事件,但不会碰到按钮单击。关于我在这段代码中犯了什么错误,有什么建议吗?
您的按钮位于更新面板内,因此您需要将该按钮作为触发器添加到更新面板中。添加到更新面板底部:
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnModify" />
</Triggers>
</asp:UpdatePanel>
您可以使用
<asp:AsyncPostBackTrigger ControlID="btnModify" />
我在2010年和2012年都创建了新的Web Forms项目,但无法重现问题。我将您的脚本添加到顶部内容,并将标记添加到"MainContent"区域,在这两种情况下,按钮都没有问题。(我修改了后面的代码,只需切换单选按钮,同样,在这两个项目中,它都很好。)我想知道你的脚本是否会以某种方式导致这个问题。
<asp:Button ID="btnModify" runat="server" Text="Button" OnClick="btnModify_Click" UseSubmitBehavior="false"/>
由于该按钮位于UpdatePanel内部,请将其更改为使用回发机制,而不是浏览器表单提交。
Button.UseSubmitBehavior属性