2011-01-05 11 views
0

これは簡単な答えがあると確信していますが、見つけられません。何もレンダリングしないASP.NETコントロールを作成する必要があります。これは、aspxデザインモードで灰色のボックスとして表示されるObjectDataSourceに似ています。今まで私はレンダリングを行うコントロールを作成しただけで、プロパティ、属性、オーバーライドなどがデザイン中にレンダリングを妨げることはありません。すべてのポインタ?デザイン中にレンダリングされないコントロール

編集:Controlから単純に継承すると、[ TypeName "ControlId" ]がレンダリングされます。 TypeName - ControlIdという灰色のボックスとしてレンダリングします。

答えて

0

あなたが探しているプロパティはOKだけでなく、私はそれで遊んとあなたは正しい、それは簡単ではないですのdesignMode

+0

私が設計中にカスタムレンダリングロジックを作成するために、過去にあることを使用しています。どのように私はそのプロパティを使用して灰色のボックスをレンダリングさせるのか説明できますか?以下は私が参照している "グレーボックス"の例です:http://www.shotdev.com/wp-content/uploads/2010/01/aspnet_objectdatasource12.jpg –

+0

あなたの 'Load'イベントでプロパティをチェックし、コントロールのデザイン部分またはランタイム部分を条件付きで表示させます。あなたは描画され、コントロール自体に入る準備ができているでしょう。 – Blindy

+0

@Blindy:私は 'Render *'メソッドをオーバーライドしようとしました。私は 'Controls'をクリアし、' CreateControlCollection'をオーバーライドし、 '新しいEmptyControlCollection(this)'を返しました。何も動作していないようです。私は 'DesignMode'がどのように動作し、どのようにカスタムロジックを追加するために使用できるのか理解しています。しかし、私はそのカスタムロジックがあると、どのように灰色のボックスを表示させるのですか? –

2

と呼ばれています。

VSはデザイナに表示されているときに実際に.ascxユーザコントロールコードを実行しませんが、マークアップのみを解析するため、条件付きでコントロールを変更することはできません。

ただし、実際のASP.NETサーバーコントロールを使用する場合、その制限はアクティブではありません。あなただけのコントロールを追加し、あなたの.aspxファイルに次に

protected override void RenderContents(HtmlTextWriter output) 
    { 
     if (DesignMode) 
      output.Write("<table style='border-color:Black;background-color:Gray'><tr><td width=300px height=100px style='vertical-align:middle;text-align:center'>I'm your design time box.</td></tr></table>"); 
     else 
      output.Write("Runtime text lalala"); 
    } 

::ちょうどそのタイプのソリューションへとあなたは.csファイルに新しいプロジェクト、overrite RenderContentsを追加

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <cc1:ServerControl1 ID="ServerControl1" runat="server" /> 
    </div> 
    </form> 
</body> 

設計時の結果:

alt text

実行時間結果:

alt text

+0

+1を参照してください。私は本当にボックスを手動で作成する必要がありますか?私はサーバーコントロール(ascx)を使用しているので、その部分は問題ではありません。おそらく、コントロールにUIコンポーネントがないときに、灰色のボックスがVisual Studioによって生成された標準ボックスであると仮定するのは間違っていましたか? 'ObjectDataSource'は本当に手動でHTMLを生成しますか?多分リフレクターを取り出して掘り起こすべきでしょう。 –

+0

標準的な箱のようです。コントロールをドロップし、存在しないプロパティを設定し、 'Error Creating Control ... 'と似たボックスを表示します。 –

+0

私はそれを探し始める場所がわかりません。それに似たように見えるテーブル! – Blindy

関連する問題