2008-11-19 31 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中。

相关问题