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 ポップアップがあります。ページに 2 番目のコントロールを追加すると、firebug で確認できるエラーが内部的にスローされます。このポップアップIDを一意にする方法は?

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

Sys.InvalidOperationException: Sys.InvalidOperationException: 同じ ID 'mpeReply' を持つ 2 つのコンポーネントをアプリケーションに追加できません。

4

4 に答える 4

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 に答える
8

多くの人が言っているように、私はこの問題の解決策を見つけました。単純な解決策は、HTML が適切に形成されていないことです。要素に余分な終了タグがあるか、欠落しています。すべてのタグが適切に閉じられていることを確認してください。問題は解決するはずです - この問題で一日中苦労しました!

于 2013-05-22T14:22:28.583 に答える
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 に答える