首先,这可以使用 javascript 和 css 来完成,而不是背后的代码。因此,这是一个示例,您可以如何做到这一点:
页面掩码
将使该技巧应用于页面的代码开始。假设您选择了一种使页面看起来不可点击、淡出的方式。
这可以通过 div 和 css 来完成。网上有很多这样的例子,这里有一个全页覆盖的示例代码
<style>
#displaybox {
z-index: 10000;
filter: alpha(opacity=50); /*older IE*/
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50); /* IE */
-moz-opacity: .50; /*older Mozilla*/
-khtml-opacity: 0.5; /*older Safari*/
opacity: 0.5; /*supported by current Mozilla, Safari, and Opera*/
background-color:#000000;
position:fixed; top:0px; left:0px; width:100%; height:100%; color:#FFFFFF; text-align:center; vertical-align:middle;
}
</style>
同步页面加载/或回发
您在 html 页面部分的正文之后设置淡出 div,并制作一个 flush() 以便它立即出现,如下所示:
<div id="FadeOutBox" ></div><%Response.Flush(); %>
并在页面底部使用 javascript 将其删除,或者使用 css 样式,如下所示:
<script>document.getElementById('FadeOutBox').style.display = "none";</script>
异步/UpdatePanel 调用
如果你有一个更新面板,那么你需要捕获更新面板触发的事件,并使这个 div 每次可见或不可见,如:
<script>
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
// Show the mask
document.getElementById('FadeOutBox').style.display = "block";
}
function EndRequestHandler(sender, args) {
// Hide it
document.getElementById('FadeOutBox').style.display = "none";
}
</script>
在 Post Back 上立即打开页面掩码
您甚至可以在回发时、页面加载之前打开页面掩码,并在页面加载之后打开它。您可以使用后面的代码来捕获提交:
if (Page.EnableEventValidation)
{
if (string.IsNullOrEmpty(Page.Form.Attributes["onsubmit"]))
{
Page.Form.Attributes["onsubmit"] = "return ShowWait();";
}
}
在javascript部分:
function ShowWait()
{
document.getElementById('FadeOutBox').style.display = "block";
return true;
}