Colección de citas famosas - Slogan de motivación - C# usa clases para obtener parámetros.

C# usa clases para obtener parámetros.

Algunos métodos resumidos, espero que sean de ayuda para el cartel original.

Primero, use Querystring

Querystring es una forma muy sencilla de pasar valores. Su desventaja es que el valor a pasar se mostrará en la barra de direcciones del navegador y los objetos no se pueden pasar de esta manera. Este método es mejor si desea pasar un valor simple o menos importante. El siguiente es un pequeño ejemplo para completar el trabajo de transferencia de valor. Los pasos son los siguientes:

1. Crear un formulario web

2. formulario, y luego coloque dos TextBox1 y TextBox2.

3. Cree un evento de clic para el botón.

El código es el siguiente:

Privado void Button1_Click (objeto remitente, sistema. EventArgs e)

{

Cadena url

url="webform2.aspx?name=" + TextBox1. texto+" & correo electrónico=" + TextBox2. Texto;

Respuesta. Redirigir (URL);

}

4. Cree una nueva página de destino llamada webform2.

5. Coloque las dos Etiqueta1 y Etiqueta2, etiqueta2 en webform2.

Agregue el siguiente código en Page_Load de webform2:

Página_Load vacía privada (Remitente del objeto, sistema. EventArgs e)

{

Etiqueta1. texto = solicitud. cadena de consulta[" nombre "];

Etiqueta 2. texto = solicitud. query string[" email "];

}

Ejecútalo y podrás ver los resultados después de la entrega.

Las desventajas de este método son:

1: En términos generales, este método se suele utilizar para pasar parámetros ordinarios, es decir, parámetros que no necesitan ser confidenciales. Al mismo tiempo, cuando se usa una cadena de consulta para pasar valores, no se pueden pasar objetos y la longitud del parámetro no puede ser mayor que 1024 bytes (?). Cuando hay caracteres chinos en los parámetros, generalmente es necesario usar HttpUlitity. ¿Método UrlEncode para codificar y decodificar parámetros?

En segundo lugar, use variables de sesión

Usar variables de sesión para pasar valores es la forma más común. No solo puede pasar el valor a la página siguiente, sino también realizar un paso cruzado. a varias páginas y la variable no desaparecerá hasta que se elimine su valor. Por ejemplo:

1, cree un formulario web

2. Coloque un botón 1 en el formulario web recién creado y luego coloque dos cuadros de texto 1 y TextBox2.

3. Cree un evento de clic para el botón.

El código es el siguiente:

Private void Button1_Click(Remitente del objeto, system. EventArgs e)

{

Sesión[" nombre" ]=TextBox1. Texto; Sesión["correo electrónico"]=TextBox2. Texto;

Respuesta. redirigir(" formulario web 2 . aspx ");

}

4. Cree una nueva página de destino denominada webform2.

5. Coloque las dos Etiqueta1 y Etiqueta2, etiqueta2 en webform2.

Agregue el siguiente código en Page_Load de webform2:

Página_Load vacía privada (Remitente del objeto, sistema. EventArgs e)

{

Etiqueta1. Texto=Sesión["nombre"]. ToString();

Etiqueta 2. Texto=Sesión["correo electrónico"]. ToString();

Sesión.

eliminar(" nombre ");

Sesión. Delete("email");

}

Ejecute y vea los resultados después de la entrega.

Las ventajas y desventajas de este método son: el uso de variables de sesión a menudo ocupa la memoria del servidor, por lo que cuando el tráfico de la página web es grande, la sesión no puede completar bien la tarea de pasar valores. Debido a que la sesión tiene un tiempo de espera, también tendrá un cierto impacto en las operaciones del usuario cuando se use.

En tercer lugar, utilice un servidor. Transferir

Aunque este método es un poco complicado, también es una forma de pasar valores en la página.

Por ejemplo:

1, cree un formulario web

2. Coloque un botón 1 en el formulario web recién creado y luego coloque dos cuadros de texto 1. y Cuadro de texto2.

3. Cree un evento de clic para el botón.

El código es el siguiente:

Private void Button1_Click(Objeto remitente, system. EventArgs e)

{

Servidor. transfer(" formulario web 2 . aspx ");

}

4. Cree un proceso que devuelva TextBox1. El código de valor del control TextBox2 es el siguiente:

Nombre de cadena pública

{

Obtener

{

Volver TextBox1. text;

}

}

Correo electrónico de cadena pública

{

Obtener

{

Devolver TextBox2. Texto;

}

}

5. Cree una nueva página de destino llamada webform2.

6. Coloque las dos Etiqueta1 y Etiqueta2, etiqueta2 en webform2.

Agregue el siguiente código en Page_Load de webform2:

Página_Load vacía privada (Remitente del objeto, sistema. EventArgs e)

{

//Crear una instancia del formulario original

formulario web 1 wf 1;

//Obtener el identificador instanciado.

wf1=(WebForm1)Contexto. Controlador;

Etiqueta1. Texto=wf1. Nombre;

Etiqueta 2. Texto=wf1. Correo electrónico;

}

Ejecute y vea los resultados después de la entrega.

4. Otros métodos de transferencia de valor

Aplicación:

Debido a que diferentes subprocesos pueden acceder a la aplicación y a todos los objetos que almacena al mismo tiempo, es mejor almacenar solo datos que rara vez se modifican dentro del alcance de la aplicación. Idealmente, el objeto se inicializa en el evento Application_Start y el acceso posterior al mismo es de solo lectura.

En el siguiente ejemplo, se lee un archivo en Application_Start (definido en el archivo Global.asax) y el contenido se almacena en un objeto DataView en el estado de aplicación.

void Application_Start()

{

Conjunto de datos ds = nuevo DataSet()

FileStream fs = nuevo

<; p>FileStream(Server.MapPath("schemadata.xml"), FileMode.Open, FileAccess.Read);

StreamReader = new StreamReader(fs);

ds. ReadXml(lector);

fs. close();

Vista de DataView = nueva DataView(ds.

Table[0]);

Aplicación["source"] = Ver;

}

En el método Page_Load, el DataView se recupera y se utiliza para rellenar el objeto DataGrid:

void Page_Load(remitente del objeto, parámetro de evento e)

{

DataView Source =(DataView)(Aplicación[" Source "]) ;...

Mi grilla de datos. fuente de datos = fuente;

...

}

La ventaja de esta solución es que solo la primera solicitud paga el costo de recuperar los datos. Todas las solicitudes posteriores utilizan el objeto DataView existente. Dado que los datos no se modifican después de la inicialización, no se requiere preparación para el acceso serializado.

La aplicación debe utilizar variables que sean relativamente estáticas en relación con todo el proyecto, como las variables de conexión de la base de datos. Las variables que no son necesariamente las mismas para todos los usuarios y todas las sesiones no son aplicables. Normalmente, los valores de las variables de la aplicación se especifican al final de la configuración. Las cookies también se pueden especificar en global.ascx:

El siguiente ejemplo muestra cómo utilizar cookies del lado del cliente para almacenar preferencias volátiles del usuario.

Es ASP para almacenar cookies del lado del cliente. El estado de sesión de NET asocia solicitudes con sesiones. Las cookies también se pueden utilizar directamente para guardar datos entre solicitudes, pero los datos se almacenarán en el cliente y se enviarán al servidor con cada solicitud. Los navegadores tienen limitaciones en cuanto al tamaño de las cookies, por lo que solo se garantiza que aceptarán 4096 bytes o menos.

Cuando los datos se almacenan en el cliente, el método Page_Load en el archivo Cookies1.aspx comprueba si el cliente ha enviado cookies. De lo contrario, cree e inicialice una nueva cookie y guárdela en el cliente:

Protected void Page_Load(Remitente del objeto, EventArgs e)

{

if ( request.cookie["preferencias 1"] = = null)

{

cookie http = nueva cookie http("preferencias 1");

p >

Cookies. Values.Add("ForeColor", "negro");...

Respuesta. append cookie(cookie);

}

}

En la misma página, use el método GetStyle nuevamente para proporcionar los valores individuales almacenados en la cookie :

Cadena protegida GetStyle(Clave de cadena)

{

Cookie HttpCookie = Solicitud. cookie[" preferencias 1 "];

if (cookie!=null)

{switch(key)

{ case "ForeColor": Devuelve cookie. valores[" ForeColor "]; romper;...

}

}

Regresar "";

}

Para hacer que una cookie persista entre sesiones, la propiedad Expires de la clase HttpCookie debe establecerse en una fecha futura. Excepto la distribución de cookies. Caducidad de la personalización a continuación. La página aspx es la misma que la del ejemplo anterior:

Protected void Submit_Click(remitente del objeto, parámetro de evento e)

{

cookie http cookie = nuevo http cookie(" preferencias 2 ");

Cookies. Values.Add("ForeColor", color de primer plano).

valor);...

Cookies. Expira = fecha y hora. MaxValue//Nunca caduca

Respuesta. agregar cookie(cookie);

Respuesta. Redirect(status["Referer"].ToString());

}

Las cookies, como forma de guardar datos al enviar y solicitar, tienen ventajas y desventajas obvias. Sus deficiencias son las mencionadas anteriormente, como el tamaño limitado y la imposibilidad de guardar objetos. Además, en cuanto al tiempo de almacenamiento, es decir, el período de validez de los datos, es de hecho el mejor almacenamiento. Podemos configurar cookies configurando el tiempo de vencimiento y otras propiedades. Las cookies también tienen muchos atributos comunes, incluidos dominio, ruta, etc. Estos materiales están disponibles en inicio rápido.

Estado de vista:

ASP.NET proporciona anotaciones del lado del servidor del estado de vista para cada control. Un control puede guardar su estado interno entre solicitudes utilizando la propiedad ViewState de una instancia de clase StateBag. La clase StateBag proporciona una interfaz estilo diccionario para almacenar objetos asociados con claves de cadena.

El archivo pagestate1.aspx muestra un panel visible y almacena su índice en el estado de vista de la página usando la palabra clave PanelIndex:

protected void Next_Click(object sender, event Parameter e)

{

cadena anterior ID del panel = " Panel "+ViewState[" Índice del panel "]. ToString();

ViewState[" índice del panel "]=(int)ViewState[" índice del panel "]+1;

cadena ID del panel = " Panel "+ViewState[" Índice del panel "]. ToString();...

}

Tenga en cuenta que si abre la página en varias ventanas del navegador, cada ventana del navegador mostrará inicialmente este panel de nombres. Cada ventana se puede colocar de forma independiente entre paneles.

Resumen

1. Utilice variables de estado de la aplicación para almacenar datos que rara vez se modifican pero que se utilizan con frecuencia.

2. Utilice variables de estado de sesión para almacenar datos específicos de la sesión o del usuario. Todos los datos se almacenan en el servidor. Este método es adecuado para datos de corta duración, masivos o sensibles.

3. Almacenar una pequeña cantidad de datos volátiles en cookies no persistentes. Los datos se almacenan en el cliente y se envían al servidor en cada solicitud, y cuando el cliente completa la ejecución, los datos dejan de ser válidos.

4. Almacene una pequeña cantidad de datos no volátiles en una cookie persistente. Los datos se almacenan en el lado del cliente hasta su vencimiento y se envían al servidor en cada solicitud.

5. Almacene una pequeña cantidad de datos específicos de la solicitud en estado de visualización. Los datos se envían desde el servidor al cliente y viceversa.