服务器端的按钮单击事件未被触发

时间:2013-07-08 15:00:31

标签: c# html asp.net

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);
        }

    }

我尝试在页面上添加几个按钮,但它们都不起作用。 当我附加进程时,断点会触及其他事件,但不会点击按钮。 关于我在这段代码中犯了哪些错误的任何建议?

4 个答案:

答案 0 :(得分:0)

您的按钮位于更新面板内,因此您需要将按钮添加为更新面板的触发器。添加到更新面板的底部:

</ContentTemplate>
<Triggers>
  <asp:AsyncPostBackTrigger ControlID="btnModify" />
</Triggers>
</asp:UpdatePanel>

答案 1 :(得分:0)

你可以使用

<asp:AsyncPostBackTrigger ControlID="btnModify" />

答案 2 :(得分:0)

我在2010年和2012年都创建了新的Web窗体项目,但无法重现该问题。我将您的脚本添加到顶部内容,将标记添加到“MainContent”区域,在这两种情况下按钮都没有问题。 (我改变了代码隐藏以简单地切换单选按钮,再次,在两个项目中,它工作得很好。)我想知道你的脚本是否会以某种方式导致问题。

答案 3 :(得分:0)

<asp:Button ID="btnModify" runat="server" Text="Button" OnClick="btnModify_Click" UseSubmitBehavior="false"/>

由于按钮位于UpdatePanel内部,因此将其更改为使用回发机制而不是浏览器表单提交。

Button.UseSubmitBehavior Property