2015-09-10 50 views
4

這是我的JavaScript函數:如何從Asp.Net Code Behind調用JavaScript函數?

function WantToSave() 
{ 
    alert('You should save now !'); 
} 

而這背後是我的ASP.NET代碼:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();"); 

達到的RegisterStartupScript功能,這是肯定的。但它不會觸發我的JavaScript函數。而第二個參數,它應該是一個「起始腳本的關鍵」,是的,但我應該放在那裏?

+0

http://stackoverflow.com/a/5325787/2777098 –

回答

5

默認情況下,腳本被寫入輸出,但沒有<script>標記。如果您使用瀏覽器的JavaScript控制檯或查看客戶端上生成的HTML,您可能會注意到這一點。確保你熟悉這些工具。

您可以通過該方法的slightly different overload爲您添加腳本標記。

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true); 

或者你也可以自行添加:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>"); 

鑰匙串和控制與註冊服務,以唯一地標識註冊的腳本類型的組合,如果你以後想註銷它或用不同的腳本替換它。所以關鍵不一定是任何特定的東西,只是一些獨特的東西。

+1

謝謝@mason,那麼「MyKey」呢,我可以在那裏寫任何東西?爲什麼? –

+3

@AntoinePelletier正確。密鑰字符串與控件註冊的類型的組合用於唯一標識已註冊的腳本,以防您稍後要取消註冊或將其替換爲其他腳本。所以關鍵不一定是任何特定的東西,只是一些獨特的東西。 – mason

1

你應該試試這個:

var name = "WantToSave"; 
var script = "<script>alert('You should save now !');</script>"; 
Page.ClientScript.RegisterStartupScript(this.GetType(), name, script); 

或者你應該在你的電話,指定添加腳本標籤的末尾添加一個真正的參數。

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();",true); 
0

使用此重載你要包裝你的呼叫<script></script>標籤根據MSDN,所以你會做:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "<script>WantToSave();</script>"); 

,或者使用其他重載

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey", "WantToSave();", true); 

這將增加與否取決於布爾參數。

2

您可以使用腳本管理器註冊啓動腳本方法。它有一個bool參數(最後一個),稱爲添加腳本標籤,爲您添加腳本標籤。

ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WantToSave();",true); 
+0

這很有趣!特別是對於Guid.NewGuid()函數,我可以根據需要經常顯示警報。謝謝@Jhon Paul –