サブクラス A1、A2、A3 を持つ抽象クラス IA があるとします。
サブクラスごとに、挿入/編集/表示する FormView を含むページと、そのクラスに固有のコードを用意しました。挿入/編集/表示用のテンプレートはすべて非常に似ているため、ほとんどがカット アンド ペーストであり、異なるテンプレートに同じ ID を持つコントロールが存在してもコンパイラは問題ありませんでした。
このようなもの:
<asp:FormView>
<InsertItemTemplate>
<asp:Label id="Label1" />
</InsertItemTemplate>
<EditItemTemplate>
<asp:Label id="Label1" />
</EdittItemTemplate>
</asp:FormView>
コード/マークアップの多くはページ全体で冗長になってしまったので、マスター/コンテンツ形式を使用するようにリファクタリングし、マスター ページには挿入/編集/表示テンプレート用のコンテンツ プレースホルダーを配置しました。
マスター ページ:
<asp:FormView>
<InsertItemTemplate>
<asp:ContentPlaceHolder ID="InsertItemTemplate"></asp:ContentPlaceHolder>
</InsertItemTemplate>
<EditItemTemplate>
<asp:ContentPlaceHolder ID="EditItemTemplate"></asp:ContentPlaceHolder>
</EdittItemTemplate>
</asp:FormView>
そしてコンテンツページ:
<asp:Content ContentPlaceHolderID="InsertItemTemplate">
<asp:Label id="Label1" />
</asp:Content>
<asp:Content ContentPlaceHolderID="EditItemTemplate">
<asp:Label id="Label1" />
</asp:Content>
コンテンツ ページ テンプレートでは、リファクタリングする前とまったく同じことを行っていますが、コンパイラがエラーで爆発しています。BC30260: 'Label1' is already declared as 'Protected WithEvents Label1 As System.Web.UI.WebControls.Label' in this class.
何らかの理由で、コンテンツ プレースホルダーが個々のテンプレートにあるにもかかわらず、コンテンツ ブロックのコントロールがテンプレートにあったときと同じ方法で分離されていません。
すべてのコントロールの名前を変更する以外に、これを回避する方法はありますか?