1

初めてのユーザー コントロールを構築しています。コントロールに必要な JavaScript をアセンブリにパッケージ化して、エンド ユーザーが依存関係を含めることを心配する必要がないようにしたいと考えています。Scott Mitchell のチュートリアル ( http://aspnet.4guysfromrolla.com/articles/080906-1.aspx ) に従いましたが、正しく動作しないようです。

これが私がこれまでに行ったことです:

次の関数を含む CollapsiblePanel.js ファイルを作成しました。

function TogglePanel(panelId) {
    //    $(panelId + ' .PanelContent').toggle();
    alert(panelId);
}

プロパティ パネルで、ビルド アクションを「埋め込みリソース」に設定しました。このファイルは、クラス ライブラリ プロジェクト内の scripts/ ディレクトリにあります。私のプロジェクトのルート名前空間は webstation.WebControls なので、私の理解が正しければ、「webstation.WebControls.scripts.CollapsiblePanel.js」を介して js ファイルを参照する必要があります。

カスタム コントロールのクラス宣言の直前に次の行を追加しました。

<Assembly: WebResource("webstation.WebControls.scripts.CollapsiblePanel.js", "text/javascript")>

カスタム コントロールの OnPreRender イベントをオーバーライドし、以下を追加しました。

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)

    Page.ClientScript.RegisterClientScriptInclude("wsWebControlsCollapsiblePanel", _
                  Page.ClientScript.GetWebResourceUrl(Me.GetType(), "webstation.WebControls.scripts.CollapsiblePanel.js"))

    MyBase.OnPreRender(e)

End Sub

コントロールをレンダリングすると、「TogglePanel(this.id);」という機能を持つボタンがあります。onclickイベントで、ボタンをクリックすると、関数が定義されていないというエラーが表示されます。埋め込まれた JavaScript の使用を開始する方法を誰かが知っている場合は、本当に助けていただければ幸いです。

マイク

4

1 に答える 1

0

それを見つけた、

問題は、リソース名に「スクリプト」を含めて、「webstation.WebControls.scripts.CollapsiblePanel.js」を作成したことです。

私はそれを試すことにしたので、「webstation.WebControls.CollapsiblePanel.js」を持っていました。

そしてそれはトリックをしました。

すべてのドキュメントが命名規則の一部としてパスを含めることを具体的に述べているため、少し混乱しますが、プロジェクトにフォルダーを含めるときに何か間違ったことをしたのかもしれません。

マイク

于 2009-10-16T16:22:34.420 に答える