こんにちは私はユーザーコントロールでAjaxControlToolkitのアコーディオンコントロールを使用しようとしています。そのユーザーコントロールは、コードビハインドから動的にページに追加されます。ユーザー制御用の私のコードは次のとおりです。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs"
Inherits="Project.UC.Control" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"
TagPrefix="asp" %>
<asp:Accordion ID="Accordion1" runat="server" HeaderSelectedCssClass="Sel"
HeaderCssClass="unSel" SelectedIndex="0">
<Panes>
<asp:AccordionPane runat="server" ID="AccordionPane1">
<Header>Red Orchid</Header>
<Content>Some content here.</Content>
</asp:AccordionPane>
</Panes>
</asp:Accordion>
ユーザーコントロールを動的に追加するために、ページのコードビハインドで次のコードを使用しました
Control mycontrol = this.LoadControl("~/myUserControl.ascx");
this.Controls.Add(mycontrol);
ユーザーコントロールのコンシューマーページに、runat = "server"のフォームタグがあり、ajax機能用のScriptManagerコントロールも追加されています。コードを実行すると、次のエラーが発生します
Control 'ctl02_Accordion1_AccordionExtender' of type
'AccordionExtender' must be placed inside a form tag with runat=server.
この問題が発生する理由は、コンシューマーページでrunat="server"タグ付きのフォームをすでに使用しています。この問題を解決するために、コンシューマーページのフォームタグをユーザーコントロールに移動しました。これで問題は解決しますが、これを行うと、コンシューマーページのポストバックを利用できなくなります。runat = "server"のフォームタグをユーザーコントロールとコンシューマーページの両方に配置すると、ページで使用できるフォームタグは1つだけであるというエラーが表示されます。この問題を解決する方法。
前もって感謝します..