2011-08-01 69 views
0

我試圖讓我的應用更加靈活。我正在使用第三方組件(富文本編輯器)。在頁面上使用該組件,我需要註冊一些JavaScript。目前,這是這樣做的:在aspx中註冊javascript調用web.config

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

我試過一些選項,就像這個但沒有工作。

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

對於我所缺少的或不可能的建議嗎? 在此先感謝。

回答

0

你在做什麼,絕對是可能的,但它確實能產生一些破壞瓦特/ ASP.NET的Ajax實現 - ASP.NET AJAX沒有按「T喜歡‘<%=%>’中的頭......

您可以嘗試無論是從代碼這些方法的背後的東西更安全一點:

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

OR

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

UPDATE:

每您不要使用相對路徑功能的建議,我完全同意。如果你想擁有整個網站的作品,而是從web.config中引用的路徑,使其成爲一個虛擬路徑:

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

然後在你的代碼:

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

然後在使用SCRIPTPATH撥打Page.ClientScript.RegisterClientScriptIncludeScriptManager.RegisterClientScriptInclude

+0

據我所知,我沒有使用AJAX。而這些行,那些進來的頁面加載? – Terry

+0

@djerry - 在頁面加載過程中工作得很好... – Brian

+0

在aspx頁面本身沒有辦法解決這個問題嗎? – Terry

0

您應該使用站點根相對路徑。來自MSDN:

站點根相對路徑,根據站點根目錄解析。 如果您在網站根目錄下的 文件夾中保留整個站點(如圖像或客戶端腳本文件)中使用的 資源,則站點根相對路徑很有用。

的線,包括它看起來像:

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

爲1頁,我有3個引用這條道路。假設我在我的應用程序的10個地方使用這個組件,我需要做30個更改,如果我不忘記一個。我認爲這可以更容易地完成。 – Terry

+0

將服務器屬性中的運行添加到腳本標記並使用〜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); 
     } 
相關問題