1

私は次のようにレンダリングしようとしている非常に単純なコントロールを持っています:

using System;
using System.Web;
using System.Web.UI;

namespace CORE.BusinessObjects.Web.Controls
{
    public class TestControl : Control
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("Hello from TestControl!");
        }
    }
}

次の方法でコントロールを呼び出しています。

<%@ Register TagPrefix="Custom" 
             Namespace="CORE.BusinessObjects.Web.Controls" %>    
<Custom:TestControl ID="testControl" runat="server" Visible="true">
</Custom:TestControl>

私は何か間違ったことをしていますか?また、オンラインで見つけたコントロール サンプルの実行に失敗しました。何も実行されません。コントロールのコンストラクタしか実行できません。私がオーバーライドしようとした他のすべてのメソッドは、実行されないRender()CreateChildControls()実行されません。

ありがとう。

編集:コントロールがマスターページのあるページに含まれていることを忘れていました。コントロールは実際にはマスター ページで正常に実行されますが、その外部では実行されません。

4

2 に答える 2

3

次のことを試してください。

a. クラスから継承しSystem.Web.UI.Control.WebControlます。

b. コントロール ライブラリを作成し、カスタム コントロール ライブラリがコンパイルされ、関連する Web プロジェクトで参照されていることを確認してください。必要に応じて、ツールボックスに追加し、そこからフォームにドラッグします。これにより、参照も 1 ステップで追加されます。

c. Assemblyコントロール宣言に、参照されるコントロール アセンブリの名前を指す属性があることを確認してください。

<%@ Register TagPrefix="Custom" Assembly="CORE.BusinessObjects" Namespace="CORE.BusinessObjects.Web.Controls" %>
<Custom:TestControl ID="testControl" runat="server" Visible="true" />
于 2009-03-12T06:42:44.260 に答える
1

CompositeControlまたはWebControlから継承しようとしています

于 2009-03-12T06:06:16.467 に答える