2009-09-11 24 views
1

我有一個頁面通過另一個網站頁面上的<script>標記引用。在腳本src中,我傳遞了我希望腳本構建的表單(從db表)以及動態構建表單應該到達的div。調用頁面看起來是這樣的:在ASPX頁面中動態構建JavaScript的方法?

<div id="FormContainer"></div> 
<script type="text/JavaScript" src="http://www.example.com/GenerateForm.aspx?FormId=1&div=FormContainer"></script> 

GenerateForm.aspx包含讀取的FormId,並在div標識的查詢字符串參數的代碼,並輸出的JavaScript,將建立形式。

我的問題是這樣的。 「輸出」JavaScript有哪些不同的方法?有些JavaScript是靜態的,可以打包成一個外部的.js文件,我也有jQuery。但是,我應該在GenerateForm.aspx標記頁面上添加它嗎?或者我應該使用ScriptManager?

那麼動態構建的JavaScript呢?目前,我只是使用Response.Write()作爲概念證明,但相反,我應該做其他事情嗎?在頁面上使用Literal控件並設置其值?使用ScriptManager?還有別的嗎?

我知道這是一個詳細的問題,所以在此先感謝!

回答

1

如果你想使用一個單獨的,引用的Javascript文件,你可能想要做的就是使用ashx文件。基本上這只是一個通用的處理程序,您將直接寫入輸出流而不必處理ASP.NET頁面生命週期。如果您從添加新項目對話框向您的站點添加基本通用處理程序(.ashx),則模板應該有足夠的方向,使用context.Response.Write()來動態輸出您的Javascript。

如果您想要輸出JavaScript的單獨行以在特定時間運行,比如在事件發生後,ScriptManager更有用。然後,例如,您可以按ScriptManager.RegisterClientBlock(this, this.GetType(), "CodeBlock", "alert('Button clicked');", true);在單擊按鈕後顯示客戶端警報框。

應該以靜態方式處理靜態文件。服務器可以處理緩存,並且如果直接從腳本標記引用靜態腳本文件,則不會導致不必要的處理。但是,如果您需要動態加載靜態腳本,則可以創建一個文字,其中包含<腳本>腳本。這樣它就使用瀏覽器的靜態文件的緩存版本。