Visual Studio 2010 で Web サイト プロジェクトをビルドしようとすると、次のエラーが発生します。
ページ '/WebSite/controls/C2.ascx' は、ユーザー コントロール '/WebSite/controls/C1.ascx' を使用できません。これは、web.config に登録されており、ページと同じディレクトリにあるためです。
2 つの Web ユーザー コントロールがあります。
controls/C1.ascx
controls/C2.ascx
コントロールは web.config に登録されています。
<configuration>
<system.web>
<pages>
<controls>
<add src="~/controls/C1.ascx" tagPrefix="my" tagName="C1"/>
<add src="~/controls/C2.ascx" tagPrefix="my" tagName="C2"/>
</controls>
</pages>
</system.web>
</configuration>
C1.ascx には静的 HTML のみが含まれ、C2.ascx は C1 を含めようとしています。
C1.ascx には、プレーンで静的なシンプルな HTML が含まれています。C2.ascx は C1.ascx を含めようとしています:
<%@ Control Language="VB" %>
<my:C1 runat="server" />
<p>Hello from C2</p>
プロジェクトをビルドしようとすると、上部にエラー メッセージが表示されます。この問題は、C2.ascx に別の Register ディレクティブを追加することで修正できることを認識しています...:
<%@ Register Src="~/controls/C1.ascx" TagPrefix="ctl" TagName="C1" %>
...しかし、よりクリーンなソリューションがあるかどうか疑問に思っています。そもそもなぜエラーが発生するのですか?