【问题标题】:Using LoadControl for a usercontrol with javascript in it将 LoadControl 用于其中带有 javascript 的用户控件
【发布时间】:2011-08-29 12:10:48
【问题描述】:

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

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

我的用户控制

<div>hello</div>
<script type="text/javascript" >
alert('hello');
</script>

页面 ascx

<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

protected void LoadTheControl(object sender, EventArgs e)
{
    MyControl control = (MyControl)LoadControl("~/MyControl.ascx");
    control.ID = Guid.NewGuid().ToString();
    WantControlHere.Controls.Add(control);
}

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

请指出我的愚蠢。

【问题讨论】:

    标签: c# javascript user-controls


    【解决方案1】:

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

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

    ScriptManager.RegisterStartupScript(this, this.GetType(), "sub", "alert('me');", true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2011-08-22
      • 2011-03-15
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多