我正在尝试做最简单的事情,通过我的代码隐藏的用户控件(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和实际的警告声明。
答案 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