ASP.NET inject javascript in user control nested i

2019-03-16 15:05发布

I'm trying to load javascript code with a user web control into a page via a the Page.LoadControl method during an asyncron post back of an update panel.

I've tried the specially for that scenario designed methods of the scriptmanager, but the javascript just doens't get returned to the user.

To explain my scenario a bit better:

Master Page has the script manager and one page loads the user control via Page.LoadControl-method during an async post back. The custom control injects in the pre-render event handler the javascript. Is that a matter of timing to inject the js or is it just not possible to do so?

5条回答
三岁会撩人
2楼-- · 2019-03-16 15:24

Have your tried

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

We do this in our User Controls and it works for us

HTH

查看更多
闹够了就滚
3楼-- · 2019-03-16 15:29

Putting the RegisterStartupScript in the Page_PreRender event may not work if your control is nested in an asp.net modal popup. Instead, put it in the Page_Load when IsPostBack = False.

查看更多
干净又极端
4楼-- · 2019-03-16 15:30

For that you can do

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

HTH

查看更多
\"骚年 ilove
5楼-- · 2019-03-16 15:43

If you don't want to hard-code your JavaScript, but instead include it from a file, call ScriptManager.RegisterClientScriptInclude and then call your initialization function in 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);
}
查看更多
孤傲高冷的网名
6楼-- · 2019-03-16 15:45

You can use the RegisterStartupScript method of the ScriptManager class to inject executable script:

public partial class WebUserControl : System.Web.UI.UserControl
{          
    protected void Page_PreRender(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true);
    }
}
查看更多
登录 后发表回答