无法在ASP.NET用户控件上执行javascript

时间:2009-03-31 07:01:47

标签: c# asp.net telerik scriptmanager clientscript

我正在尝试做最简单的事情,通过我的代码隐藏的用户控件(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 个答案:

答案 0 :(得分:1)

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

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

编辑:通常此代码有效,但我不知道telerik的控制如何影响注入的脚本。我认为你应该打开页面的HTML源代码并尝试查找注入的脚本。这有助于我们解决您的问题。

答案 1 :(得分:1)

啊,问题是Telerik RadAjaxPanel。我只需要将EnableOutsideScripts设置为true,就像这样:

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

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

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

答案 2 :(得分:0)

您的网页中有<form runat="server"吗?

答案 3 :(得分:0)

如果来自按钮的onClienClick事件,你会打电话吗?无论您使用何种控件,请确保从客户端事件中调用js

另外,请查看this的想法

修改

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

EDIT2

结帐the last post on this page