首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对包含javascript的用户控件使用LoadControl

对包含javascript的用户控件使用LoadControl
EN

Stack Overflow用户
提问于 2011-08-29 11:16:16
回答 1查看 1.6K关注 0票数 1

这可能属于“我认为你做错了”这一类,但我有一个用户控件,里面有javascript,我想在更新面板中动态加载它。这是因为初始页面加载占用的空间很小,但如果用户发出请求,控件就会加载(没有什么异常)。

我发现我的javascript在控件加载时没有被执行。有没有什么魔法可以让javascript执行,或者它永远不会发生,因为浏览器不会重新解析加载的html中的标签?

我的用户控件

代码语言:javascript
复制
<div>hello</div>
<script type="text/javascript" >
alert('hello');
</script>

第ascx页

代码语言:javascript
复制
<asp:Button OnClick="LoadTheControl" runat="server">Click to Load</asp:Button>
<asp:UpdatePanel ID="myUPanel" runat="server">
    <asp:PlaceHolder ID="WantControlHere" runat="server" />
    <Triggers>
          <asp:AsyncPostBackTrigger ControlID="LoadTheControl" />
    </Triggers>
</asp:UpdatePanel>

第cs页

代码语言:javascript
复制
protected void LoadTheControl(object sender, EventArgs e)
{
    MyControl control = (MyControl)LoadControl("~/MyControl.ascx");
    control.ID = Guid.NewGuid().ToString();
    WantControlHere.Controls.Add(control);
}

Firebug显示我的控件的所有代码都在那里,但它没有执行的javascript。

请指出我的愚蠢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-29 12:10:48

我认为为了在你的控件加载后执行javascript,你必须使用ScriptManager.RegisterStartupScript方法来注册它。

在控件的Page_Load方法中,注册您想要执行的脚本,如下所示:

代码语言:javascript
复制
ScriptManager.RegisterStartupScript(this, this.GetType(), "sub", "alert('me');", true);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7225730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档