我正在尝试在更新面板的asyncron回发期间通过Page.LoadControl方法将带有用户Web控件的JavaScript代码加载到页面中。
我已经尝试过专门用于脚本管理器的方案设计方法,但javascript只是不会返回给用户。
更好地解释我的情景:
母版页具有脚本管理器,并且在异步回发期间,一个页面通过Page.LoadControl方法加载用户控件。自定义控件在预渲染事件处理程序中注入javascript。这是注入js的时间问题还是不可能这样做?
答案 0 :(得分:3)
为此你可以做到
string scr;
scr = "<script src='/scripts/myscript.js'></script>"
Page.ClientScript.RegisterStartupScript(GetType(Page), "key", scr, false)
HTH
答案 1 :(得分: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);
}
答案 2 :(得分:2)
试过了吗
Page.ClientScript.RegisterStartUpScript(GetType(Page), "key", <your script here>, addSctiptTags:=true)
我们在用户控件中执行此操作,它适用于我们
HTH
答案 3 :(得分: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);
}
}
答案 4 :(得分:1)
如果您的控件嵌套在asp.net模式弹出窗口中,则将RegisterStartupScript置于Page_PreRender事件中可能不起作用。相反,当IsPostBack = False时将其放在Page_Load中。