2011-04-15 28 views
2

私はASP .NET Webコントロールの初心者ですが、一般的なASP .NETやC#では初めてです。ASP.NET Webコントロールは特定のコンテンツのみを許可しますか?

許可されたコンテンツタイプを特定のクラスに制限する方法が不思議です。

私はTabPanelという名前のカスタムWebコントロールを作成しましたが、TabPagesのみを含めることができます。

例として、次のマークアップはチェックボックスが含まれているため不正です。

<cc1:TabPanel ID="TabPanel1" runat="server"> 
    <cc1:TabPage runat="server"> 
     this is a simple test 
    </cc1:TabPage> 
    <cc1:TabPage runat="server"> 
     this is another simple test 
    </cc1:TabPage> 
    <asp:CheckBox runat="server" /> 
</cc1:TabPanel> 

この場合、チェックボックスは表示されません。これをどうやって阻止することができますか?

+2

あなたの質問は理にかなっていません。 –

+2

@ジョン:私の前提では、カスタムコントロールを作成していて、コンテナにタイプX(この場合はX = CheckBox)のコントロールを受け入れたくないのです。 –

+0

もっと建設的なはずです。どのようにそれは意味をなさないのでしょうか? –

答えて

1

私はそれを理解しました。

AddedControlプロシージャの下で例外をスローすると、追加するコントロールのタイプが必要なタイプでない場合、WebControlからオーバーライドしました。

デザイナーは、コントロール自体に美しい赤いエラーメッセージを表示し、私にそのような愚かなことをさせません。

恐ろしい!私はあなたが後に私は、私はこれをしようと行っている他のものに基づいています正確に何をしようとしていない

0

私はここで推測しますが、quick googlingに基づいて、ControlBuilderを探していると思います。デモではコントロールが "mycell"というオブジェクトに限定されていますが、自分のオブジェクトや、ASP.NETコントロール(つまり、パネルはTextBoxなどではない)に限定することはできません。 )

最後の手段として、レンダリング方法をハイジャックして、あらかじめ決められたクラスセット内のコントロールをレンダリングすることができると確信していますが、これは最高のハックだと思われます。

2

  • をTabPagesのコレクションですTabPannelでプロパティを作成(デモンストレーション用のタブにそれを呼び出します)。これは、配列、リスト、またはカスタムコレクションクラスにすることができます。キーはTabPagesをメンバーとしてのみ受け入れるように型付けされています。
  • プロパティに[PersistenceMode(PersistenceMode.InnerProperty)]属性を与えます。
  • CreateChildControlsをオーバーライドして、コレクションの内容をコントロールに追加します。

    <cc1:TabPanel ID="TabPanel1" runat="server"> 
        <Tabs> 
         <cc1:TabPage runat="server">this is a simple test</cc1:TabPage> 
         <cc1:TabPage runat="server">this is another simple test</cc1:TabPage> 
        </Tabs> 
    </cc1:TabPanel> 
    

    、それはタブ財産の内部にネストされるのTabPageではない何かを許可してはいけません:あなたはこのようにそれを行う場合は、あなたのマークアップはこのような何かを探して終わるべきで

http://msdn.microsoft.com/en-us/library/9txe1d4x(v=VS.90).aspxは、この手法を詳しく説明しています。

+0

本当に面白いです。私は自分の答えで終わった。 –

関連する問題