Мы часто используем модальные окна при взаимодействии человека с компьютером программ, но при разработке B/S это становится непросто, хотя этого также можно добиться с помощью функции window.showModalDialog (см. http://dotnet.aspx .cc/ShowDetail .aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 ), но большинство из них затруднительно использовать, и вам придется использовать Frameset для создания двух бесполезных окон, чтобы вернуть значение. точный!
Я обнаружил, что могу попытаться встроить IFRAME в начальную страницу, а затем использовать IFRAME для отображения страницы, установить IFRAME для размещения в абсолютном положении и установить для Z-Index максимальное значение 9999, так что эта страница может быть наложена на начальную страницу. В интерфейсе, когда необходимо отобразить модальное окно, этот IFRAME может быть расширен, чтобы покрыть начальное окно, или можно закрыть ключевые элементы. Целью является предотвращение возможности изменений в последующих окнах. Если окно, отображаемое IFRAME, необходимо закрыть, просто скройте его родительский IFRAME. В ходе эксперимента мы обнаружили, что диалог IFRAME нельзя изменить в дочернем окне. Поэтому нам также необходимо поместить IFRAME в DIV. Управляя отображением DIV, мы можем контролировать внешний вид или скрытие окна. . Но почему бы не использовать DIV для непосредственного отображения окна? Есть две причины: 1. DIV не может заблокировать расположенный за ним элемент управления Dropdownlist, а IFRAME может. 2. Содержимое окна нелегко разместить на отдельной веб-странице, а возможность повторного использования оставляет желать лучшего.
Ниже приведен код как клиентского, так и серверного кода:
WebForm1.aspx
<%@ Page Language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm1. " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<ГОЛОВКА>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<script Language="JavaScript">
функция ПоказатьСлой()
{
document.all.MyFormLayer.style.display='';
вернуть ложь;
}
функция SetURL(url)
{
document.all.IFRAME1.src=url;
}
</скрипт>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" метод="post" runat="server">
<FONT face="宋体">
<asp:DropDownList id="DropDownList1" style="Z-INDEX: 101; СЛЕВА: 40 пикселей; ПОЛОЖЕНИЕ: абсолютное; ВЕРХУ: 208 пикселей"
runat="сервер" Ширина="184px">
<asp:ListItem Value="TEST1">q</asp:ListItem>
<asp:ListItem Value="TEST2">w</asp:ListItem>
<asp:ListItem Value="TEST3">e</asp:ListItem>
<asp:ListItem Value="TEST4">r</asp:ListItem>
</asp:DropDownList></FONT> <input type="button" name="MyButton" value="TEST" id="MyButton" onclick="ShowLayer();SetURL('WebForm2.aspx')" style= «Z-INDEX: 102; СЛЕВА: 360 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 336 пикселей»>
<div id="MyFormLayer" style="DISPLAY: none;Z-INDEX: 103;LEFT: 16px;WIDTH: 408px;POSITION: абсолютное;ВЕРХ: 24px;ВЫСОТА: 304px">
<iframe Scrolling="no" Frameborder="0" width="100%" height="100%" id="IFRAME1" runat="server">
</iframe>
</div>
<asp:Button id="Button2" style="Z-INDEX: 104; СЛЕВА: 256 пикселей; ПОЛОЖЕНИЕ: абсолютное; СВЕРХУ: 336 пикселей" runat="server"
Text="ASPXTest"></asp:Button>
</форма>
</тело>
</HTML>
WebForm1.aspx.cs
....
общедоступный класс WebForm1: System.Web.UI.Page
{
защищенный System.Web.UI.WebControls.DropDownList DropDownList1;
защищенный System.Web.UI.HtmlControls.HtmlGenericControl IFRAME1;
защищенный System.Web.UI.WebControls.Button Button2;
частная пустота Page_Load (отправитель объекта, System.EventArgs e)
{
//Поместите сюда пользовательский код для инициализации страницы
если(!Испостбак)
{
}
}
public static void CreateScript(System.Web.UI.Page mypage,string strScript,string ID)
{
string strscript="<script Language='javascript'>";
стрскрипт += стрскрипт;
стрскрипт += "</script>";
если (!mypage.IsStartupScriptRegistered (ID))
mypage.RegisterStartupScript(ID, strscript);
}
частный void Button2_Click (отправитель объекта, System.EventArgs e)
{
IFRAME1.Attributes.Add("src","WebForm2.aspx?NAME='Китай'");
CreateScript(Page, «ShowLayer();», «SHOW»);
}
}
WebForm2.aspx
<%@ Page Language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<ГОЛОВКА>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<script Language="JavaScript">
функция скрыть()
{
родитель.MyFormLayer.style.display = "нет";
}
</скрипт>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form2" метод="post" runat="server">
<table border="0" width="100%" cellpacing="0" cellpadding="0" bgcolor="#6887bb" height="100%"
id="table1" style="BORDER-TOP-STYLE: начало; BORDER-RIGHT-STYLE: начало; BORDER-LEFT-STYLE: начало; BORDER-BOTTOM-STYLE: начало">
<тр>
<тд>
</td>
<тд>
</td>
<тд>
</td>
</tr>
<тр>
<тд>
</td>
<тд>
<p align="center"><font color="#ffffff">Имитация эффекта модального окна</font></p>
<p align="center"><input type="button" onclick="hide()" style="WIDTH: 80px" value="Нажмите, чтобы закрыть">
<asp:Button id="Button1" runat="server" Text="ASPXTest"></asp:Button></p>
</td>
<тд>
</td>
</tr>
<тр>
<тд>
</td>
<тд>
</td>
<тд>
</td>
</tr>
</таблица>
</форма>
</тело>
</HTML>
Пространство имен
WebFom2.aspx.cs
WSGUI1
{
/// <сводка>
/// Краткое описание WebForm2.
/// </сводка>
общедоступный класс WebForm2: System.Web.UI.Page
{
защищенный System.Web.UI.WebControls.Button Button1;
частная пустота Page_Load (отправитель объекта, System.EventArgs e)
{
//Поместите сюда пользовательский код для инициализации страницы
если(!Испостбак)
{
Button1.Attributes.Add("onclick","hide()");
}
}
}