asp:ImageButton没有触发onclick事件

cdo*_*ner 10 asp.net webforms master-pages onclick imagebutton

我有一个页面,它使用母版页,几个RequiredFieldValidators和Web Toolkit自动完成扩展程序.以下代码仅显示页面的最小值:

<%@ Page Language="C#" 
    AutoEventWireup="true"  
    CodeFile="Login.aspx.cs" 
    MasterPageFile="~/master.master" 
    Inherits="Login" %>

<asp:Content id="Content1" 
    contentplaceholderid="ContentPlaceHolder1" 
    runat="server">
    <asp:UpdatePanel ID="pnlUpdate" runat="server">
        <ContentTemplate>
            <div>
                <asp:ImageButton class="submitButton" 
                    imageurl="images/button_submit.gif" 
                    id="btnSubmit" 
                    runat="server" 
                    onclick="btnSubmit_ServerClick"/>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

protected void btnSubmit_ServerClick
      (object sender, ImageClickEventArgs e)
{
    //breakpoint here does not get hit
}
Run Code Online (Sandbox Code Playgroud)

<form runat="server">标签是在母版页.上面的代码不会触发onclick事件.如果我删除母版页并向页面添加表单标记,它就可以工作.是否不支持母版页中的表单标记,或者这应该以某种方式工作? alt text http://digitalcopy.warnerbros.com/images/mainmenu.gif?provider=00079&disc=03403AAA-1D20-47F2-91FA-5EE632832659

Ata*_*hev 12

您还可以检查ImageButton是否未触发验证.如果它确实将其CausesValidation属性设置为false(当然,如果它有意义).


Cha*_*ant 0

您必须在某处以 runat=server 的形式拥有控件,它可以位于母版页或 .aspx 文件中。仔细检查母版页表单标记是否为 runat=server

AutoEventWireup 是允许您使用的语法的属性。仔细检查母版页、WebForm 中的设置,也可以在 web.config 中设置。

如果这不起作用,您可以随时对其进行显式编码(我更喜欢)

<script runat=server>

protected override void OnInit(EventArgs e)
    {
        btnSubmit.Click += delegate(object sender, EventArgs e1)
        {

        };
        base.OnInit(e);
    }

</script>
Run Code Online (Sandbox Code Playgroud)

UpdatePanel 也可能会引发服务器端事件,因此请尝试不使用 UpdatePanel。我确信您在母版页中有一个 ScriptManager