2

たとえば、SampleControl というカスタム コントロールがあります。この質問を簡単にするために、Panel Control のクローンをゼロから作成しているとします。

<CC:SampleControl ID="Sample1" runat="server">
   <asp:Label ID="Label1" runat="server" Text="Hi"></asp:Label>
   <asp:Button ID="Button1" runat="server" Text="Button1"></asp:Label>
</CC:SampleControl>

出力するには:

<div id="Sample1">
   <span id=Label1>Hi</span>
   etc.....
</div>

コードの場所:

public class SampleControl: WebControl
{
    .....Render Stuff Goes Here.....
}  

中央の ASP コントロールは、ASP.NET によって登録されていません。パネル コントロールにリフレクターを作成したとき、中央のコントロールをレンダリングする方法がわかりませんでした。テンプレート コントロールを使用しているようには見えません。

これを行うと、次のエラーが発生します。

パーサー エラーの説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。

何か案は?

4

1 に答える 1

6

まず、 [ParseChildren(false)] 属性により、コントロールがネストされたコンテンツを子コントロールとして処理することをパーサーに知らせます。

次に、Render のどこかで RenderChildren メソッドが呼び出されていることを確認します。これは System.Web.UI.Control.Render() のデフォルトの実装であるため、オーバーライドされた Render メソッドで base.Render(writer) を実行できます。

于 2008-10-22T09:23:34.860 に答える