1

パネルから派生した最初の ASP.net サーバー コントロールを作成しようとしています。何らかの理由で、アプリケーションがコントロールのクラスと名前空間を認識しているにもかかわらず、.aspx ページにサーバー タグを認識させることができません。

私が使用した手順は次のとおりです。

1) 私は自分の site_code ディレクトリに配置したクラス CollapsablePanel を作成しました。Web サイトではなく Web アプリを使用しているため、App_Code は実際には利用できません。

Namespace webstation.WebControls

    Public Class CollapsablePanel
        Inherits System.Web.UI.WebControls.Panel


    End Class

End Namespace

2) .aspx ファイルに <%@ Register TagPrefix="webstation" Namespace="MyApplication.webstation.WebControls" %> を追加しました

プロジェクトをビルドしましたが、カスタム タグのプレフィックスが表示されません。先に進んで入力すると、エディターはエラーをスローしませんが、ページを公開してアクセスしようとするとエラーが発生します。分離コード (Imports MyApplication.webstation.WebControls) からクラスにアクセスしようとすると、カスタム コントロールがインテリセンスで表示されるので、Visual Studio がクラス情報をある程度読み取っていることがわかります。

ここで何が間違っていますか?どんな考えでも大歓迎です。

マイク

4

3 に答える 3

2

TagName 属性が欠落しているようです

<%@ Register TagPrefix="webstation" TagName="CollapsiblePanel" Namespace="MyApplication.webstation.WebControls" %>

これを行うと、次のようにアクセスできるはずです

<webstations:CollapsiblePanel id='usercontrol1" runat="server" />
于 2009-10-14T17:32:52.983 に答える
1

コントロールの登録に関する Scott Gu のブログ投稿を確認してください。私は、コントロールを自分で web.config ファイルに登録するのが好きです。 http://weblogs.asp.net/scottgu/archive/2006/11/26/tip-trick-how-to-register-user-controls-and-custom-controls-in-web-config.aspx

ライブラリ名と名前空間を意味する、コントロール クラスへの完全修飾参照があることを確認する必要があります。コントロールをクラス ライブラリに配置しましたが、App_Code フォルダーに含めることができます。また、web.config でユーザー コントロールを登録することもできます。両方の例を次に示します。

于 2009-10-14T17:38:42.527 に答える
0

先に進み、同じソリューションでクラス ライブラリ プロジェクトを作成し、プロジェクトをビルドし、クラス ライブラリのビンから DLL をコピーして、使用する Web プロジェクトのフォルダーに配置すると、期待どおりに機能することができました。外部バイナリを保持します。プロジェクトの .dll への参照も追加しました。それをしたら、構文は次のとおりです。

<%@ Register Assembly="webstation.WebControls" Namespace="webstation.WebControls" TagPrefix="webstation" %>

働き始めました。同じソリューションのクラス ライブラリから Web プロジェクトのコンパイル済み .DLL をどうにか自動的に更新できるかどうかは誰にもわかりませんか? それとも、毎回 bin フォルダーに移動して、手動で Web プロジェクトにコピーする必要がありますか?

ありがとう、

マイク

于 2009-10-14T19:31:01.473 に答える