2009-08-21 23 views
2

2つのプロジェクトがあります.1つはコントロールライブラリで、もう1つはメインプロジェクトです。コントロールライブラリから私は現在、コントロールライブラリに埋め込まれているユーザーコントロールといくつかのCSSファイルを使用しています。ASP.Net - 別のプロジェクトの埋め込みJavaScriptファイルを含めるにはどうすればよいですか?

私は私のユーザーコントロールのPreRenderイベントから、次の手順を実行して、私のメインのプロジェクトに埋め込まれたCSSファイルを使用することができます。

// Register the default CSS resource 
    string includeTemplate = "<link rel='stylesheet' text='text/css' href='{0}' />"; 
    string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.WebNotify.WebNotify.css"); 
    LiteralControl cssInclude = new LiteralControl(String.Format(includeTemplate, includeLocation)); 
    ((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(cssInclude); 

私はそれがその後、同様の方法ですべての私のJavaScriptファイルを含めるために意味をなすだろうと思いましたそれらを呼び出すしようとしたとき

// Register the js 
    string includeTemplate = "<script type='text/javascript' src='{0}'></script>"; 
    string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.Scripts.MyScript.js"); 
    LiteralControl jsInclude = new LiteralControl(String.Format(includeTemplate, includeLocation)); 
    ((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(jsInclude); 

さて、CSSはすべての作品は完全に、しかし、私のJS関数はオブジェクトに必要な例外をスロー:ので、私は次のことをやって埋め込まれたJavaScriptファイルが含まれています。

私は正しい方法を考えていますか?あるいは、別のアセンブリから埋め込まれたjsファイルを別のプロジェクトに組み込むより良い方法がありますか?

+1

は、JSファイル応答ステータスコードの要求は次のように何を見ていますか? 404? 500? – BigBlondeViking

+0

申し訳ありませんが、どういう意味ですか? – GenericTypeTea

+0

Firefoxを実行している場合は、FireBug(http://getfirebug.com)をインストールし、サイトを参照し、FireBugのスクリプトタブで、スクリプト呼び出しの応答と出力を確認します。 IE8を実行している場合は、F12キーを押して開発者ツールを起動し、そこでスクリプトをチェックします。 –

答えて

3

Firefoxの場合FireBugFiddler、Internet Explorerの開発者ツールなど、いくつかのツールを使用して、サーバーにどのような呼び出しが行われているか、返信されている応答を確認してくださいBigBlondeVikingが参照しているもの

JSファイルを "build"とマークしたことを確認したいeソリューション - デフォルトではなく「行動しない」。

しかし、埋め込まれたスクリプトresoucesを追加するクリーンな方法が実際にあり、ClientScriptManagerの「RegisterClientScriptResource」方法:

// Get a ClientScriptManager reference from the Page class. 
ClientScriptManager cs = Page.ClientScript; 

// Register the client resource with the page. 
cs.RegisterClientScriptResource(rstype, 
    "MyCompany.ControlLibrary.Scripts.MyScript.js"); 
+0

ありがとう、美しく働いた。 – GenericTypeTea

+0

問題ありません、喜んで助けてください:) –

3

しかし、この時点で、私は実際にすべてがそこに到達して使用されているかどうかを判断するためにクライアントツールを使用しています(フィドラー/ツールバー/ Firebug/etc)。

私が推測しなければならないのは、あなたのコードは機能していると言えますが、使用しているブラウザによっては、終了タグを持たないscriptタグ(つまり、何らかの理由で<script></script> opposed to <script />);)その

+1

+1 for fiddler/firebug – BigBlondeViking

+0

私はあなたの提案に従ってスクリプトタグを変更しましたが、私は突然それが間違っていたことに気付きました...しかし、それは修正されませんでした。 – GenericTypeTea

関連する問題