2011-07-15 30 views
1

我正在使用一個stringbuilder對象連接一些javascript在一起,然後註冊它。我的問題是,是否有一種方法使用客戶端JavaScript來清除該JavaScript時回發發生。我發現在使用腳本管理器註冊數組時,您必須清空任何動態數組,並且基本上我想用我正在動態添加到頁面的JavaScript代碼做同樣的事情? JavaScript有一個鍵(「randomlists」),所以我們必須能夠引用它!RegisterStartUpScript - 發生回發時清除代碼

ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascript.ToString(), true); 

讓我再解釋一下。我正在註冊的JavaScript包含一些變量,在這種情況下,一些其他數組是動態填充的。目前的錯誤是,這些數組是附加到而不是重新實例化和重新填充(大量'重新'),如果我可以簡單地清除並重新註冊代碼,所有問題都會奇蹟般地停止...

謝謝。

回答

0

在回帖後重新註冊使用相同名稱的腳本,但內容不同(即不同的字符串生成器)應該的工作。

在aspx頁面上添加一個名爲「Button1」的按鈕,並使用以下aspx.cs作爲概念驗證。在頁面加載警報「1」後單擊該按鈕,然後回發。再次點擊按鈕,你會得到一個警告「2」,表明在回帖後,我能夠重新定義變量。

aspx.cs頁:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button1.Attributes.Add("onclick", "alert(test);"); 
     var sb_javascript = new StringBuilder(); 
     var sb_javascriptPostback = new StringBuilder(); 
     sb_javascript.Append("var test='1';"); 
     sb_javascriptPostback.Append("var test='2';"); 
     if ((Page.IsPostBack)) 
     { 
      ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof(UpdatePanel), "randomlists", sb_javascriptPostback.ToString(), 
               true); 
     } 
     else 
     { 
      ScriptManager.RegisterStartupScript(UpdatePanel_MyPublications, typeof (UpdatePanel), "randomlists", 
               sb_javascript.ToString(), 
               true); 
     } 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.Write("PostBack"); 
    } 
} 

如果這不起作用,請把你的代碼,所以我們可以看看您的具體方案。