5

我正在尝试在更新面板的异步回发期间通过 Page.LoadControl 方法将带有用户 Web 控件的 javascript 代码加载到页面中。

我已经尝试了专门为该场景设计的脚本管理器方法,但是 javascript 并没有返回给用户。

为了更好地解释我的情况:

母版页有脚本管理器,一个页面在异步回发期间通过 Page.LoadControl 方法加载用户控件。自定义控件在预渲染事件处理程序中注入 javascript。这是注入js的时间问题还是不可能这样做?

4

5 回答 5

3

为此,您可以做到

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

高温高压

于 2008-12-02T01:57:15.870 回答
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);
}
于 2009-12-23T19:44:26.263 回答
2

你试过了吗

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

我们在用户控件中执行此操作,它对我们有用

高温高压

于 2008-11-19T14:08:01.480 回答
2

您可以使用 ScriptManager 类的 RegisterStartupScript 方法来注入可执行脚本:

public partial class WebUserControl : System.Web.UI.UserControl
{          
    protected void Page_PreRender(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true);
    }
}
于 2008-11-19T20:20:59.357 回答
1

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

于 2010-06-30T16:41:01.927 回答