防止其他服务器控件作为自定义ASP.NET控件的子级

| 除了创建自定义“ 0”类以外,还有没有办法防止服务器控件作为自定义ASP.NET控件的子级添加? 例如,假设我正在构建自己的
Panel
控件:
<my:SpecialPanel ID=\"SpecialPanel1\" runat=\"server\">
    <!-- Allow valid HTML -->
    <input id=\"tbEmailAddress\" type=\"text\" />
</my:SpecialPanel>
我想阻止用户在
SpecialPanel
内添加服务器端控件:
<my:SpecialPanel ID=\"SpecialPanel1\" runat=\"server\">
    <!-- WRONG - Throw an Exception -->
    <asp:TextBox ID=\"tbEmailAddress\" runat=\"server\" />
</my:SpecialPanel>
有什么建议么?     
已邀请:
您可以重写Control.AddParsedSubObject方法:
public class SpecialPanel : Control
{
   protected override void AddParsedSubObject(Object obj) 
   {
      if (obj is Control) 
      {
         throw new InvalidOperationException(
             \"The \'SpecialPanel\' control cannot contain server controls\");
      }
   }
}
相关资源: IParserAccessor接口     

要回复问题请先登录注册