您的位置:首页 > 编程语言

关于模态对话框关闭之后继续执行服务器端代码的问题

2006-12-31 10:19 411 查看
updated on 2008/6/26

最近做一个从Access项目向 Asp.net + SqlServer迁移工作,其中遇到了这种情况,在Access窗体的一个按钮事件中,代码大体上是这么个功能:弹出模态对话框,在关闭对话框之后继续走一段数据库操作代码。

在Asp.net里弹出模态对话框容易,但是在模态对话框关闭之后还要继续执行服务器代码,这就要求当对话框关闭之后页面要立即提交。于是有了以下的解决方法。

在Web Form中拖入服务器端按钮,并假设此按钮ID为 btnComput,在隐藏页面的 Page_Load 中用代码中这样写:

btnComput.Attributes("onclick") = " window.showModalDialog('')",参数为对话框Web Form。

在btnComput的服务器端事件里执行当对话框关闭之后的数据库操作代码。

因为点击 btnComput时,先执行客户端javascript,在弹出模态对话框后,页面也没提交,一直等到对话框关闭之后,javascript才算执行完毕,然后Web页面提交,继续执行服务器端的事件。这样连同客户端代码和服务器端事件代码一起实现了Access中那个按钮的功能。

在弹出的模态页面里要注意两点:

1. 在进行事件处理时防止弹出新的页面

2. 防止发生缓存不向服务器提交

可以添加以下标记在<head>里

<!--Prevent opening new window-->

<base target="_self" />

<!--Disable the cache-->

<meta http-equiv="pragma" content="no-cache" />

<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />

<meta http-equiv="expires" content="Mon, 23 Jan 1978 20:52:30 GMT" />

看到一位网友对Asp.net中使用模态窗体的心得,写得不错,见下:

1. Asp.net中使用javascrip的模态窗体的一点体会

2. Accessing a parent browser window from a child window or vice versa using JavaScript
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐