2008-11-19 33 views
5

我試圖在更新面板的asyncron帖子後面通過Page.LoadControl方法將帶有用戶web控件的JavaScript代碼加載到頁面中。ASP.NET在嵌套在更新面板中的用戶控件中注入javascript

我已經試過了專門針對該場景設計的scriptmanager方法,但是javascript只是不會返回給用戶。

爲了說明我的情況好一點:

母版頁有腳本管理器和一個頁面加載一個異步回發期間通過Page.LoadControl法的用戶控件。自定義控件在prerender事件處理程序中注入javascript。這是注入js的時機問題還是僅僅是無法做到這一點?

希望有人對此有所瞭解。 堆在此先感謝, derSteve

回答

3

對於您可以做

string scr; 
scr = "<script src='/scripts/myscript.js'></script>" 
Page.ClientScript.RegisterStartupScript(GetType(Page), "key", scr, false) 

HTH

2

有你試過

Page.ClientScript.RegisterStartUpScript(GetType(Page), "key", <your script here>, addSctiptTags:=true) 

我們這樣做是我們的用戶控件,它爲我們工作

HTH

2

可以使用的的RegisterStartupScript方法ScriptManager類注入可執行腳本:

public partial class WebUserControl : System.Web.UI.UserControl 
{   
    protected void Page_PreRender(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true); 
    } 
} 
+2

我發現這隻適用於同步回發,不適用於異步UpdatePanel回發。我錯過了什麼嗎? – 2011-06-28 11:31:13

3

如果你不想硬編碼你的JavaScript,而是從一個文件中包含它,叫ScriptManager.RegisterClientScriptInclude然後調用你的初始化函數在ScriptManager.RegisterStartupScript

protected void Page_Load(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterClientScriptInclude(
     this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js")); 
    ScriptManager.RegisterStartupScript(
     this, GetType(), "formatTableFunction", "formatTable()", true); 
} 
1

如果您的控件嵌套在asp.net模式彈出窗口中,將RegisterStartupScript放入Page_PreRender事件中可能不起作用。相反,當IsPostBack = False時,將其放入Page_Load中。

相關問題