A menudo utilizamos ventanas modales en la interacción de programas entre humanos y computadoras, pero en el desarrollo B/S esto no resulta fácil, aunque también se puede lograr usando la función window.showModalDialog (consulte http://dotnet.aspx .cc/ShowDetail .aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 ), pero la mayoría de ellos son problemáticos de usar y debes usar Frameset para crear dos ventanas inútiles para poder devolver el valor. ¡preciso!
Descubrí que puedo intentar incrustar un IFRAME en la página inicial y luego usar el IFRAME para mostrar una página, configurar el IFRAME para que se coloque en una posición absoluta y establecer el índice Z en el 9999 más alto, de modo que esta página se puede superponer en la página inicial. En la interfaz, cuando es necesario mostrar una ventana modal, se muestra este IFRAME. El tamaño del IFRAME se puede expandir para cubrir la ventana inicial, o se pueden cubrir elementos clave. El objetivo es evitar la posibilidad de cambios en ventanas posteriores. Cuando sea necesario cerrar la ventana que muestra el IFRAME, simplemente oculte su IFRAME principal. Durante el experimento real, descubrimos que el cuadro de diálogo del IFRAME no se puede cambiar en la ventana secundaria. Por lo tanto, también necesitamos colocar el IFRAME en un DIV. Al controlar la visualización del DIV, podemos controlar la apariencia u ocultación de la ventana. . Pero, ¿por qué no usar DIV para mostrar la ventana directamente? Hay dos razones: 1. DIV no puede bloquear el control Dropdownlist detrás de él, pero IFRAME sí. 2. No es fácil colocar el contenido de la ventana en una página web separada y la reutilización es deficiente.
El siguiente es el código que se utiliza para mostrar y ocultar tanto el código del cliente como el del servidor:
WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm1. "%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transicional//ES" >
<HTML>
<CABEZA>
<título>Formulario web1</título>
<meta nombre="GENERADOR" Contenido="Microsoft Visual Studio .NET 7.1">
<meta nombre="CODE_LANGUAGE" Contenido="C#">
<meta nombre="vs_defaultClientScript" contenido="JavaScript">
<meta nombre="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<lenguaje de escritura="javascript">
función MostrarCapa()
{
document.all.MyFormLayer.style.display='';
devolver falso;
}
función EstablecerURL(url)
{
document.all.IFRAME1.src=url;
}
</script>
</CABEZA>
<cuerpo MS_POSITIONING="GridLayout">
<id de formulario="Form1" método="publicación" runat="servidor">
<FONT face="宋体">
<asp:DropDownList id="DropDownList1" style="ÍNDICE Z: 101; IZQUIERDA: 40px; POSICIÓN: absoluta; ARRIBA: 208px"
runat="servidor" Ancho="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="botón" nombre="MiBotón" valor="PRUEBA" id="MiBotón" onclick="ShowLayer();SetURL('WebForm2.aspx')" estilo= "ÍNDICE Z: 102; IZQUIERDA: 360 px; POSICIÓN: absoluta; ARRIBA: 336 px">
<div id="MyFormLayer" style="PANTALLA: ninguna; ÍNDICE Z: 103; IZQUIERDA: 16px; ANCHO: 408px; POSICIÓN: absoluta; ARRIBA: 24px; ALTURA: 304px">
<iframe scrolling="no" frameborder="0" ancho="100%" alto="100%" id="IFRAME1" runat="servidor">
</iframe>
</div>
<asp:Botón id="Botón2" estilo="ÍNDICE Z: 104; IZQUIERDA: 256px; POSICIÓN: absoluta; ARRIBA: 336px" runat="servidor"
Texto="ASPXTest"></asp:Botón>
</formulario>
</cuerpo>
</HTML>
WebForm1.aspx.cs
....
clase pública WebForm1: System.Web.UI.Page
{
protegido System.Web.UI.WebControls.DropDownList DropDownList1;
System.Web.UI.HtmlControls.HtmlGenericControl IFRAME1 protegido;
Sistema protegido.Web.UI.WebControls.Button Button2;
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
//Pon el código de usuario aquí para inicializar la página
si(!IsPostBack)
{
}
}
public static void CreateScript (System.Web.UI.Page mi página, cadena strScript, ID de cadena)
{
string strscript="<lenguaje de escritura='javascript'>";
strscript += strScript;
strscript += "</script>";
if(!mipágina.IsStartupScriptRegistered(ID))
mypage.RegisterStartupScript(ID, strscript);
}
Botón vacío privado2_Click (remitente del objeto, System.EventArgs e)
{
IFRAME1.Attributes.Add("src","WebForm2.aspx?NAME='China'");
CreateScript(Página,"MostrarCapa();","MOSTRAR");
}
}
WebForm2.aspx
<%@ Idioma de página="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Hereda="WSGUI1.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transicional//ES" >
<HTML>
<CABEZA>
<título>WebForm2</título>
<meta nombre="GENERADOR" Contenido="Microsoft Visual Studio .NET 7.1">
<meta nombre="CODE_LANGUAGE" Contenido="C#">
<meta nombre="vs_defaultClientScript" contenido="JavaScript">
<meta nombre="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<lenguaje de escritura="javascript">
función ocultar()
{
parent.MyFormLayer.style.display = "ninguno";
}
</script>
</CABEZA>
<cuerpo MS_POSITIONING="GridLayout">
<form id="Form2" método="post" runat="servidor">
<table border="0" width="100%" cellspace="0" cellpadding="0" bgcolor="#6887bb" height="100%"
id="table1" style="FRONTERA-ESTILO-ARRIBA: inicio; FRONTERA-ESTILO-DERECHO: inicio; FRONTERA-ESTILO-IZQUIERDO: inicio; FRONTERA-ESTILO-INFERIOR: inicio">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p align="center"><font color="#ffffff">Imitar efecto de ventana modal</font></p>
<p align="center"><input type="button" onclick="hide()" style="ANCHO: 80px" value="Haga clic para cerrar">
<asp:Botón id="Botón1" runat="servidor" Texto="ASPXTest"></asp:Botón></p>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tabla>
</formulario>
</cuerpo>
</HTML>
Espacio de nombres
WebFom2.aspx.cs
WSGUI1
{
/// <resumen>
/// Descripción resumida de WebForm2.
/// </summary>
clase pública WebForm2: System.Web.UI.Page
{
protegido System.Web.UI.WebControls.Button Button1;
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
//Pon el código de usuario aquí para inicializar la página
si(!IsPostBack)
{
Button1.Attributes.Add("al hacer clic","ocultar()");
}
}
}