当我运行代码时,在response.write之前的线程进程!!为什么以及如何按顺序制作它们?
insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
答案 0 :(得分:1)
响应是Web应用程序中的一次性事情。你不能“回应一点,做别的事情,并做出更多回应。”当您考虑修改响应的标题之类的Response.Redirect()
之类的内容时尤其如此。 (基本上,Response.Redirect()
将完全“破坏”您添加到响应中的任何内容,以便用户永远不会看到它。)
看起来你在这里要做的是:
有几种标准方法可以实现这一目标。您可以使用包含步骤1的页面进行响应,在客户端代码中执行步骤2和3,或者您可以在服务器端代码中执行步骤3,在第二页上执行步骤1(可能还有两个,隐藏消息几秒后。)
例如,假设您要在页面A上显示消息,等待几秒钟,然后将用户发送到页面B.然后在页面A中,您可能包含以下内容:
<script type="text/javascript">
$(function() {
$('#dialog-message').dialog({
modal: true,
buttons: {
Ok: function() {
$(this).dialog('close');
}
},
close: function() {
window.location.href='Default.aspx';
}
});
});
</script>
<div id="dialog-message">Done successfully ...</div>
使用jQuery,它的作用是向用户显示一个对话框(使用jQuery UI Dialog)和预期的消息,当用户关闭对话框时,它会执行重定向。
答案 1 :(得分:0)
您可以使用代码中的客户端功能来执行此操作 请参阅以下链接
答案 2 :(得分:0)
Web响应只会在webrequest完成处理后进入页面,即您可以在完全执行代码后看到响应。因此您的代码正在排除正确的顺序。您可以通过插入Response.End()方法来测试它如下图所示
insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Response.End();
Thread.Sleep(4000)
Response.Redirect("Default.aspx")