【问题标题】:Can't get no javascript to execute on an ASP.NET user control无法在 ASP.NET 用户控件上执行任何 javascript
【发布时间】:2009-03-31 07:01:46
【问题描述】:

我正在尝试做最简单的事情,通过 javascript 从我的用户控件 (ascx.cs) 的代码隐藏中显示警报弹出窗口。

我试过了

protected void btnSave_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(btnSave, GetType(), "uniqueID", "alert('hello');", true);
}

还有

Page.ClientScript.RegisterStartupScript(GetType(), "uniqueID", "alert('hello');", true);

但似乎没有什么对我有用。该控件位于 ASPX 页面中的 RadAjaxPanel (telerik) 内。

我在这里遗漏了一些明显的东西。有什么想法吗?

编辑:据我所知,javascript 没有注入到 html 源代码中。我在 html 中查找 ID 和实际的警报语句。

【问题讨论】:

    标签: c# asp.net telerik scriptmanager clientscript


    【解决方案1】:

    将页面类型传递给客户端脚本类型参数:

    Page.ClientScript.RegisterClientScriptBlock(typeof(MyPage), 
        "myPostBackScript", script, true);
    

    编辑: 通常这段代码可以工作,但我不知道 Telerik 的控制如何影响注入的脚本。我认为你应该打开页面的 HTML 源代码并尝试找到注入的脚本。这将帮助我们解决您的问题。

    【讨论】:

      【解决方案2】:

      啊,问题出在 Telerik RadAjaxPanel。我只需要将 EnableOutsideScripts 设置为 true,如下所示:

      <telerik:RadAjaxPanel ID="ajaxpanel" runat="server" LoadingPanelID="ajaxLoadingPanel" EnableOutsideScripts="true">
      

      然后我可以使用以下代码:

      ScriptManager.RegisterStartupScript(btnSave, GetType(), "uniqueID", "alert('hello');", true);
      

      【讨论】:

        【解决方案3】:

        你的页面中有&lt;form runat="server"吗?

        【讨论】:

          【解决方案4】:

          如果从按钮的 onClienClick 事件中调用,你会调用吗?无论您使用什么控件,请确保您是从客户端事件调用 js

          另外,看看this 的想法

          编辑

          你不能从服务器调用 js,js 是 CLIENT-SIDE 脚本。您可以做的是在完成所有检查后注册您的脚本,并将其绑定到 onload 事件。详情请见SO question

          EDIT2

          查看the last post on this page

          【讨论】:

          • 它是从服务器端按钮单击事件中调用的,因为我必须在抛出警报框之前进行一些服务器端检查。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-09
          • 2011-04-27
          • 2011-01-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多