Asp.net 提交不起作用

Asp.net 提交不起作用,asp.net,Asp.net,我正在ASP.NET应用程序中使用动态控件。所以问题是,当我单独使用这些控件时,它们工作得很好。但当我将这两个控件放在同一页上时,只会触发最后一个提交事件。谁能帮我确定问题出在哪里以及如何解决 以下是我的aspx布局: <%@ Control Language="C#" AutoEventWireup="True" CodeBehind="MYPAGE.ascx.cs" Inherits="MYNAMESPACE" %> <%@ Register Assembly="MYANO

我正在ASP.NET应用程序中使用动态控件。所以问题是,当我单独使用这些控件时,它们工作得很好。但当我将这两个控件放在同一页上时,只会触发最后一个提交事件。谁能帮我确定问题出在哪里以及如何解决

以下是我的aspx布局:

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="MYPAGE.ascx.cs" Inherits="MYNAMESPACE" %>
<%@ Register Assembly="MYANOTHERNAMESPACE" Namespace="MYNAMESPACE" TagPrefix="DAControl" %>

...
 <div>
     <DAControl:ChooseImageDialog runat="server" id="ChooseImageDialog" />
     <DAControl:ChooseVideoDialog runat="server" id="ChooseVideoDialog" />
 </div>

...
这是我的第一个控件:

    [ToolboxData("<{0}:ChooseImageDialog runat=server></{0}:ChooseImageDialog>")]
    public class ChooseImageDialog : WebControl
    {
        /* This is only part of my code, which should enough for explaining the issue*/

        private Button applyPreview = new Button();
        private Button cancelPreview = new Button();

        protected override void OnLoad(EventArgs e)
        {
            applyPreview.Click += new EventHandler(applyPreview_Click);

            base.OnLoad(e);
        }

        void applyPreview_Click(object sender, EventArgs e)
        {
            // I want to reach this block
        }
    }
}
[ToolboxData(“”)
公共类选择图像对话框:网络控制
{
/*这只是我代码的一部分,足以解释这个问题*/
私有按钮applyPreview=新建按钮();
private Button cancelPreview=新建按钮();
受保护的覆盖无效加载(事件参数e)
{
applyPreview.Click+=新建事件处理程序(applyPreview\u Click);
基础荷载(e);
}
void applyPreview\u单击(对象发送者,事件参数e)
{
//我想去这个街区
}
}
}
这是我的第二个控件:

[ToolboxData("<{0}:ChooseVideoDialog runat=server></{0}:ChooseVideoDialog>")]
    public class ChooseVideoDialog : WebControl
    {
        /* This is only part of my code, which should enough for explaining the issue*/
        private Button applyVideoPreview = new Button();
        private Button cancelPreview = new Button();

        protected override void OnLoad(EventArgs e)
        {    
            applyVideoPreview.Click += new EventHandler(ApplyPreviewVideo_Click);

            base.OnLoad(e);
        }

        void ApplyPreviewVideo_Click(object sender, EventArgs e)
        {
            // I want to reach this block
        }

    }
[ToolboxData(“”)
公共类选择视频对话框:网络控制
{
/*这只是我代码的一部分,足以解释这个问题*/
私有按钮applyVideoPreview=新建按钮();
private Button cancelPreview=新建按钮();
受保护的覆盖无效加载(事件参数e)
{    
applyVideoPreview.Click+=新建事件处理程序(ApplyPreviewVideo\u Click);
基础荷载(e);
}
void ApplyPreviewVideo\u单击(对象发送者,事件参数e)
{
//我想去这个街区
}
}

事件必须连接到Init事件中。生命周期中的任何后期都太晚了。

好吧,我试着在初始事件中这样做,但仍然没有成功。。。无论如何,这些控件都是有效的。问题只出现在我将这些控件放在同一页上时。在返回类型之前添加“protected”…通过“…哪一个应该足以解释问题”,您的意思是在将两个控件减少到代码的这些部分时仍然会遇到问题吗?“仅触发最后一次提交事件”的确切含义是什么?是的,我在将两个控件缩减为这些代码部分时仍然遇到问题。我的意思是,我有两个提交按钮,但仅在最后一个控件(位于第二个控件)起作用。但是,如果我在.aspx文件中更改声明顺序,那么只有第1个才有效。使用您的代码,我获得了一个有效的解决方案。我猜这可能是从您将按钮添加到控件的那一刻开始的,而您的代码中并没有出现按钮(我将其作为onload中的第一行来做;我猜在init上会更好)您的MyPage.ascx是否动态添加到页面?然后,您应该提供相关代码。