1

我正在尝试做最简单的事情,通过 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 和实际的警报语句。

4

4 回答 4

1

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

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

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

于 2009-03-31T07:09:57.733 回答
1

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

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

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

ScriptManager.RegisterStartupScript(btnSave, GetType(), "uniqueID", "alert('hello');", true);
于 2009-03-31T14:27:21.410 回答
0

<form runat="server"的页面里有吗?

于 2009-03-31T07:03:34.423 回答
0

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

另外,看看这个的想法

编辑

你不能从服务器调用 js,js 是客户端脚本。您可以做的是在完成所有检查后注册您的脚本,并将其绑定到 onload 事件。有关详细信息,请参阅此SO 问题

编辑2

查看此页面上的最后一篇文章

于 2009-03-31T07:48:37.063 回答