(ModalPopupExtender)具有相同id的两个组件无法添加到应用程序中

Kas*_*hif 6 .net asp.net user-controls ajaxcontroltoolkit

我有一个用户控件,只要用户点击按钮,我就会在页面上添加.以下是添加控件的代码.

protected void Page_Init(object sender, EventArgs e)
{
    if (Session["ControlCount"] != null)
    {
        for (int i = 1; i <= (int)Session["ControlCount"]; i++)
        {
            Control myUserControl = LoadControl("~/Controls/MessageControl.ascx");
            divMessageControl.Controls.Add(myUserControl);
        }
    }
}

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btnExpand_Click(object sender, EventArgs e)
{
    int count = 0;
    if (Session["ControlCount"] != null)
    {
        count = Convert.ToInt32(Session["ControlCount"]);
    }

    Control myUserControl = (Control)Page.LoadControl("~/Controls/MessageControl.ascx");
    divMessageControl.Controls.Add(myUserControl);
    Session["ControlCount"] = count + 1;
}
Run Code Online (Sandbox Code Playgroud)

此控件具有ModalPopupExtender弹出窗口.当我在页面上添加第二个控件时,它会在内部抛出一个错误,我可以在firebug中看到.如何使这个弹出窗口ID独一无二?

<asp:ModalPopupExtender ID="mpeReply" BehaviorID="mpeReply" runat="server" TargetControlID="btnReply"
    PopupControlID="pnlReply" BackgroundCssClass="ModalPopupBG1">
</asp:ModalPopupExtender>
Run Code Online (Sandbox Code Playgroud)

Sys.InvalidOperationException:Sys.InvalidOperationException:无法将具有相同ID"mpeReply"的两个组件添加到应用程序中.

小智 8

我找到了解决这个问题的方法,正如很多人所说的那样,简单的解决方案就是你的HTML没有正确形成 - 元素有一个额外的或缺少的结束标记.确保所有标签都已正确关闭,问题应该消失 - 整天都在努力解决这个问题!


Tuy*_*yen 8

我使用此代码来解决我的问题,请注意ScriptMode设置为"Release"

<AjaxControlToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"  ScriptMode="Release">
</AjaxControlToolkit:ToolkitScriptManager>
Run Code Online (Sandbox Code Playgroud)

我从这个链接看到了类似的答案:http: //www.advancesharp.com/questions/17658/sys-invalidoperationexception-two-components-with-the-same-id-xxx-can-t-be-added-to -应用程序


Yur*_*kiy 3

从扩展器中删除BehaviorID属性