1
else if (Result == 1)
{
  ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Test", "return  confirm('Are you sure you want to delete? This action cannot be undone.')", true);                              
  FSI.DeleteINsertData(ID.ToString(), No.ToString());
}

我对后面的代码有一个 js 确认。当用户单击“是”时,我想继续处理,否则,用户单击“否”,什么也不做。它在 else if 语句中。感谢您的回答。

4

3 回答 3

1

利用:

Response.Write("<script>confirm('Are you sure you want to delete? This action cannot be undone.');</script>");

可能工作!

于 2013-10-31T07:59:25.753 回答
0

您的问题意味着您要做的是在等待某些客户端代码执行时暂停服务器端代码(在删除任何内容之前)(抛出确认框以确保用户确实想要执行删除)。这根本不是事情的运作方式。

ScriptManager.RegisterClientScriptBlock(...) 调用所做的只是告诉服务器它应该在向客户端发送响应时包含该脚本。然后它不会暂停并发送脚本;相反,它只是继续执行删除,然后将页面和脚本发送到客户端。你无法改变这种行为——它是服务器端 Web 编程工作方式的基本组成部分。

您的选择实际上是让他们首先单击的删除按钮/链接在您访问服务器之前弹出确认框(如果他们改变主意,取消表单提交或链接单击),或者或者让服务器回复该提交/单击确认页面,要求他们单击另一个按钮,然后再次返回服务器以实际执行删除。

于 2013-10-31T08:48:13.093 回答
0

我认为您可以在服务器端和客户端之间进行合并。您可以将脚本添加为后面的代码:
string scriptStr = "<script>var confirmation = confirm('something'); if(confirmation){document.getelementbyid('button').click();} else{//something else}</script>"; RegisterStartupScript("ScriptFunction", scriptStr );

and then in your code behind handle the button click event.
This may works for you.
于 2013-10-31T10:48:08.623 回答