6

我有一个用户控件,每当用户单击按钮时,我都会在页面上添加该控件。以下是添加控件的代码。

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

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

<asp:ModalPopupExtender ID="mpeReply" BehaviorID="mpeReply" runat="server" TargetControlID="btnReply"
    PopupControlID="pnlReply" BackgroundCssClass="ModalPopupBG1">
</asp:ModalPopupExtender>

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

4

4 回答 4

8

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

于 2013-05-22T14:22:28.583 回答
8

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

<AjaxControlToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"  ScriptMode="Release">
</AjaxControlToolkit:ToolkitScriptManager>

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

于 2013-11-15T18:29:41.080 回答
3

从扩展器中删除 BehaviorID 属性

于 2012-11-02T05:45:13.103 回答
2

类似的问题在这里。我的解决方案是在添加 ScriptMode="Release" 属性后将脚本管理器从快捷方式关闭标记更改为完整关闭标记:

改变: <asp:ScriptManager ID="ScriptManager1" ScriptMode="Release" runat="server" />

到: <asp:ScriptManager ID="ScriptManager1" ScriptMode="Release" runat="server></asp:ScriptManager>

于 2014-04-23T16:12:21.860 回答