2013-10-15 26 views
1

我試圖在page_load上顯示兩個警報,但ScriptManager只執行我的第一個警報。 我真的不知道該怎麼做,有人可以幫助我嗎?ScriptManager.RegisterStartupScript接收兩個,但執行一個腳本

這是我的測試代碼。它位於加載方法中:

Page currentPage = (Page)HttpContext.Current.Handler; 
ScriptManager.RegisterStartupScript(currentPage, typeof(string), "Script" + DateTime.Now.Millisecond, 
    "alert('1!');", true); 
ScriptManager.RegisterStartupScript(currentPage, typeof(string), "Script" + DateTime.Now.Millisecond, 
    "alert('2!');", true); 
+4

關鍵參數應該是唯一的。通過放置''Script'+ DateTime.Now.Millisecond',你可能會在兩種情況下得到相同的名字。在這種情況下,腳本被覆蓋。 – HiperiX

+2

或者更好的是,將所有腳本合併到一個字符串中,並僅運行一個'RegisterStartupScript'。提示:如果構建一個有點複雜的腳本,可以使用StringBuilder。 –

+0

做一個合併是要走的路!謝謝!做一個合併的 –

回答

4

正如評論中所述,您可能獲得了兩個註冊的相同密鑰。試試這種方式:

Page currentPage = (Page)HttpContext.Current.Handler; 

ScriptManager.RegisterStartupScript(currentPage, typeof(string), 
    "Script" + Guid.NewGuid, "alert('1!');", true); 
ScriptManager.RegisterStartupScript(currentPage, typeof(string), 
    "Script" + Guid.NewGuid, "alert('2!');", true); 

或者將兩個腳本合併成一個腳本並只進行一次註冊。

+0

是要走的路!謝謝! –