我有一个网页(ASP.NET C#),它有一个按钮:
<asp:Button ID="btnHide" runat="server" OnClick="HidePanel" Text="Hide"/>
我正在做一个JavaScript警告,如:
public void HidePanel(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(),"Hello","<script type=text/javascript> alert('Hello') </script>");
}
如果我将该功能修改为没有object sender
和EventArgs e
,那么我可以从Page_Load
调用它,它可以正常工作,我收到警报。
如上所述,我希望在点击按钮时看到警报,但它没有发生。我确定这是明显的,但我没有看到它。
答案 0 :(得分:3)
使用OnClientClick
代替OnClick
。并添加return false
以避免页面上的回发。
<asp:Button ID="btnHide" runat="server" OnClientClick="alert('Hello'); return false;" Text="Hide"/>
答案 1 :(得分:2)
你可以尝试使用, ClientScript.RegisterClientScriptBlock(GetType(),“nameOfScript”,scriptString);
我之前在点击事件中使用过它。
编辑: 我还无法编辑帖子,但您的代码也适用于我。
根据具体情况,他可能希望在click事件上做一些服务器端的事情,或者动态地构建脚本。
编辑: 如果您已经注册了具有相同名称的脚本,则它将无法运行,例如。
Page.ClientScript.RegisterStartupScript(this.GetType(), "Hello", "<script type=text/javascript> var i = 0;</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "Hello", "<script type=text/javascript> alert('other hello') </script>");
答案 2 :(得分:1)
您可以删除代码以注册JavaScript代码,而不是执行此操作:
<asp:Button ID="btnHide" runat="server"
OnClick="HidePanel" Text="Hide" OnClientClick="alert('Hello');"
UseSubmitBehavior="false" />
此:
UseSubmitBehavior="false"
将导致该按钮触发客户端脚本,它将运行服务器端代码(post-back)。