2008-11-17 32 views
8

我想RegisterClientScriptBlock在一個只能通過AJAX調用調用的方法。它似乎沒有實際註冊頁面上的腳本,我猜這是因爲它實際上並沒有重新加載整個頁面。有沒有辦法在ajax方法調用的頁面上註冊javascript?RegisterClientScriptBlock在AJAX方法調用

protected void MyMethod(object sender, EventArgs e) 
    { 
     // This method only called via AJAX call 

     Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "resize", "alert('here');", true); 
    } 

回答

20

隨着AJAX啓用頁面,你應該使用的ScriptManager註冊腳本:

ScriptManager.RegisterClientScriptBlock(Page, typeof(MyPage), 
    "MyScript", "GoStuff()", true) 

您可以使用這將註冊您的所有腳本(原始加載,回發,AJAX回發)。

0

據我所知,你將被迫通過PostBack而不是ajax調用來調用此方法。可能有這樣做的其他方式,但它是不可能的Page.ClientScript ....

0

通常,在將元素innerHTML附加到包含此腳本的塊後加載外部javascript時,需要評估(評估)腳本以使其正常工作並將其自身呈現到當前加載的文檔中。

我建議對下列做:作爲YUI get utility外部工具,這是應該允許這樣的行爲或爲自己like this

1

它的工作原理,如果你指定的腳本做一些評價

使用UpdatePanel正在AJAX回調中更新。例如:

ScriptManager.RegisterClientScriptBlock(UpdatePanelMain, typeof(UpdatePanel), 
    UpdatePanelMain.ClientID, 
    "document.getElementById('imgLoading').style.display = 'none';" + 
    "document.getElementById('divMultiView').style.display = 'inline';", 
    true); 

在第一個參數的控制必須是更新面板或觸發更新的更新面板本身裏面。

0

如果還有其他人像我一樣,而且接受的答案仍然不適合你,那就不要再看了。

Check out this link - 一個簡單的類彈出一個JavaScript警告不管你是在頁面加載,卸載,AJAX請求,等:

WebMsgBox.Show("Your message here");