2011-08-01 16 views
0

私はもっと柔軟なアプリケーションを作ろうとしています。私は第三者コンポーネント(リッチテキストエディタ)を使用しています。コンポーネントが使用されているページで、私はいくつかのjavascriptを登録する必要があります。現時点では、これがそうしている:aspxでweb.configを呼び出すjavascriptを登録しています

<script type="text/javascript" src="../../Resources/Xinha/my_config.js"></script> 

私はこの1つのように、いくつかのオプションを試してみましたが、どれも働きました。

<script type="text/javascript" src="<%=ConfigurationSettings.AppSettings["Xinha.PathToPackage"]%>/XinhaCore.js"></script> 

私には何が欠けているのか、これは可能ではないのですか? ありがとうございます。

答えて

0

は間違いなく可能ですが、それは本当にASP.NETのAjaxの実装/ wのいくつかの大混乱を作成することができます - ASP.NET Ajaxのdoesnの「T 『<% =%>』のようなヘッダーで...

あなたが少しより安全な何かのための背後にあるコードからこれらのアプローチのいずれかを試すことができます。

ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "scriptFromConfig", ConfigurationManager.AppSettings["myScriptUrl"]); 

OR

Page.ClientScript.RegisterClientScriptInclude("scriptFromConfig", ConfigurationManager.AppSettings["myScriptUrl"]); 

UPDATE:あなたは相対パス機能を使用しない推奨パー

、私は完全に同意するものとします。あなたのコードに続いて

<add key="myScript" value="~/scripts/someScript.js"/> 

:あなたのサイト全体で動作しますが、web.configファイルから参照されているパスを持つようにしたい場合は、その仮想パス作る

string scriptPath = VirtualPathUtility.ToAbsolute(ConfigurationManager.AppSettings["myScript"]); 

その後は、scriptPathでの使用Page.ClientScript.RegisterClientScriptIncludeまたはScriptManager.RegisterClientScriptIncludeコール。

+0

私が知る限り、私はAJAXを使っていません。そして、これらのラインは、それらがpageloadに来る? – Terry

+0

@djerry - ページの読み込み中にうまくいく... – Brian

+0

これを回避する方法はありませんが、aspxページそのものですか? – Terry

0

サイトルートの相対パスを使用する必要があります。 MSDNより:

サイトルートに対して解決されるサイトルートの相対パス。 サイトルートの相対パスは、Webサイトルートの下にある フォルダに、画像またはクライアントスクリプトファイルなど、サイト全体で というリソースを使用する場合に便利です。

それは次のようになり含めるためにライン:何をやっている

<script type="text/javascript" src="/Resources/Xinha/my_config.js"></script> 
+0

1ページのために、私はそのパスへの3つの参照を持っています。アプリケーションの10箇所でこのコンポーネントを使用しているとしましょう。変更を30回行う必要があります.1つを忘れないでください。私はこれがもっと簡単にできると思った。 – Terry

+0

スクリプトのタグにrunと​​いうサーバプロパティを追加し、〜simbolを使用して相対的なルートにしますか?スクリプトマネージャを追加してそこにスクリプトを登録することもできます。 – Ernesto

-1

次のコードを使用し、それが作業を行いますが:

protected void Page_Load(object sender, EventArgs e) 
     { 
      Literal l = new Literal(); 
      l.Text = "<script type='text/javascript' src='../../Resources/Xinha/my_config.js'></script>"; 
      this.Page.Header.Controls.Add(l); 
     }