我试图点击弹出如下所示,但它不起作用.请帮忙
public void btnSubmit_Click(Object o, EventArgs e)
{
if (checkFileExists(Convert.ToString(fileInfo)))
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Msg", "<script type=\"text/javascript\" language=\"javascript\">function showMsg(){return confirm(\"This image name already exists, do you want to replace it?\");}</script>", true);
btnSubmit.OnClientClick = "return showMsg()";
}
if (something else)
{
// It does whatever is here but never pops the question above
}
}
Run Code Online (Sandbox Code Playgroud)
在我的按钮上
<asp:Button class="Button" ID="btnSubmit" CausesValidation="True" Text="SUBMIT" runat="server"
OnClick="btnSubmit_Click"></asp:Button>
Run Code Online (Sandbox Code Playgroud)
use*_*954 36
Page.ClientScript.RegisterClientScriptBlock无法工作的另一个原因是当页面没有服务器端表单时,例如 <form id="form1" runat="server">... </form>
Fis*_*rdo 17
您要发送的最后一个参数RegisterClientScriptBlock
是true
,它告诉方法将您的脚本包装在一个<script>
块中,但您已经这样做了.它可能不起作用,因为它呈现无效(即嵌套)脚本标记.
更新后的回应(回应OP的评论)
整个"你确定"的范例在ASP.NET中实现会有点烦人.这是我用来解决它的方法.我相信还有很多其他方法可以实现这一目标,其中一些更优雅.但无论如何...
完成上述更改后,您的页面应如下所示:
上述方法绝对是严厉的.如果你愿意使用ajax来决定是否需要"你确定",你可以将更多的逻辑移到客户端,并为自己节省回发操作.
但是,无论是否严厉,上述方法都可行,并且只要您提出一些好的评论,就会产生相对易于维护的代码.
原始回应:
按照目前的编写,直到用户第二次单击"提交"按钮时才会调用showMsg():
其他需要考虑的事项:
您在RegisterClientScript中有实际的javascript函数定义.为什么不简单地在页面上定义它(在.aspx文件中)?总是把它放在那里不会有任何伤害.直到实际调用它才会被触发.
我不熟悉你正在使用的doubled-parens表示法:"GetType()()" - 如果它没有引起编译器错误或没有抛出,它可能是无关紧要的.
绝对熟悉Firebug和/或Fiddler,因此您可以准确地看到呈现的HTML被发送回浏览器的内容.它将使您的Web开发调试变得更加容易.