ASP: creación de una página ASP. Agregar comandos a un script de servidor

Un archivo de páginas Active Server (ASP) es archivo de texto con la extensión ".asp". Este archivo puede contener:

  • datos de texto;
  • Etiquetas de lenguaje HTML;
  • guiones del servidor.

Para creación rápida Archivo “.asp”, simplemente cambie el nombre del archivo HTML cambiando la extensión “.htm” o “.html” a “.asp”. Si el archivo no contiene funciones ASP, el servidor simplemente envía el archivo de manera eficiente a la computadora del usuario. Esta característica brinda comodidad adicional a los desarrolladores web, quienes pueden otorgar a los archivos la extensión ".asp" incluso si no tienen la intención de incluir funciones ASP posteriormente.

Para publicar su archivo .asp recién creado en Internet, debe guardarlo en un directorio virtual en su sitio web (que debe tener permisos de secuencia de comandos o ejecución). Después de esto puedes contactar este archivo en la solicitud especificando la información apropiada dirección URL. (Una cosa para recordar es que, dado que las páginas ASP deben representarse en el servidor, ingresar la ruta física al archivo ".asp" en en este caso no válido.) El archivo enviado por el servidor cuando se ve en un navegador es página HTML. Esto tiene cierto sentido, ya que antes de enviar el archivo, el servidor lo ejecuta. analizando y todas las tareas del servidor se ejecutan secuencias de comandos ASP. Por lo tanto, los usuarios siempre reciben archivos regulares HTML.

Los archivos ".asp" se pueden crear en cualquier editor de texto. A medida que adquiera experiencia, puede resultarle más conveniente trabajar en un editor especial que incluya soporte adicional ASP como Microsoft® Visual InterDev™. ( Más información consulte el sitio web de Microsoft Visual InterDev en http://msdn.microsoft.com/vinterdev/.)

Agregar comandos a un script de servidor

El script del servidor consta de una secuencia de instrucciones que garantizan que los comandos se envíen al servidor web uno por uno. (Los desarrolladores web pueden estar familiarizados con los scripts del lado del cliente que se ejecutan en un navegador web). Los archivos .asp utilizan delimitadores para separar los scripts de los datos de texto y los comandos HTML. Separador es un carácter o secuencia de caracteres que indica el comienzo o el final de una sección. El lenguaje HTML utiliza símbolos () como delimitadores, entre los cuales se encuentran las etiquetas HTML.

En ASP, los comandos de script están encerrados en . Los delimitadores pueden ser cualquier comando válido en el lenguaje de secuencias de comandos que esté utilizando. A continuación se muestra un ejemplo de una página HTML simple con comandos de script.

Esta página se actualizó por última vez el.

función VBScript Ahora() regresa fecha actual y tiempo. Cuando se procesa esta página, el navegador web reemplazará la fecha y hora actuales y devolverá la página al navegador con el siguiente resultado:

Esta página se actualizó por última vez el 29/01/99 a las 14:20:00.

Los comandos encerrados entre delimitadores se llaman equipos principales escenarios y se procesan utilizando el lenguaje de secuencias de comandos subyacente. El comando dentro de los delimitadores debe ser un comando válido en el lenguaje de programación del host. De forma predeterminada, el lenguaje de secuencias de comandos principal es VBScript; También puede asignar un lenguaje de secuencias de comandos predeterminado diferente. Consulte Trabajar con lenguajes de secuencias de comandos.

Los desarrolladores de scripts del lado del cliente están familiarizados con la etiqueta HTML, que se utiliza para resaltar comandos y expresiones. En los scripts del lado del servidor, la etiqueta se puede utilizar para definir procedimientos en varios idiomas contenidos en un único archivo ".asp". Para obtener más información sobre este tema, consulte Trabajar con lenguajes de secuencias de comandos.

Intercambio Etiquetas HTML y comandos de lenguaje de secuencias de comandos

Los delimitadores ASP pueden contener cualquier declaración, expresión, procedimiento o declaración que sea legal en el lenguaje de programación del host que esté utilizando. Bajo instrucciones en VBScript y otros lenguajes de programación, se entiende una construcción sintácticamente completa que describe un tipo de acción, declaración o definición. Un ejemplo de una instrucción de uso común es instrucción condicional Si...Entonces...Si no:

Dependiendo de la hora del día, a la variable de cadena strGreeting en el script se le asigna el valor "¡Buenos días!" (" Buen día!") o "¡Hola!" "¡Hola!". La instrucción envía el valor actual de la variable al navegador.

Así, hasta las 12:00 horas (hora local), se muestra en las pantallas de los usuarios la siguiente línea:

¡Buen día!

Después de las 12:00, los usuarios verán el siguiente mensaje:

Puede haber texto HTML entre las diferentes partes de la instrucción. Por lo tanto, el resultado de ejecutar el siguiente script con etiquetas de lenguaje HTML y una declaración If...Then...Else es el mismo que en el ejemplo anterior:

¡Buen día! ¡Hola!

Si se cumple la condición especificada en el script (aún no ha llegado el mediodía), el servidor web envía el texto HTML especificado en la condición ("Buenos días") al navegador. De lo contrario, la cadena (“¡Hola!”) especificada después de Else se envía al navegador. Este tipo de alternancia entre texto HTML y comandos de script se utiliza a menudo cuando se trabaja con la instrucción If...Then...Else. Usar el diseño discutido anteriormente es conveniente si desea mostrar un saludo en varios lugares de una página web. El valor de una variable se establece solo una vez, después de lo cual se puede utilizar varias veces.

El texto HTML también se puede pasar al navegador directamente desde un comando de script, en lugar de colocarlo entre diferentes comandos. La devolución de texto al navegador se realiza mediante el objeto de respuesta ASP integrado. El resultado de ejecutar el siguiente script es el mismo que en el ejemplo anterior:

El comando Response.Write envía el texto que le sigue al navegador. La declaración Response.Write debe usarse en los casos en que el texto devuelto al navegador debe generarse dinámicamente. Así, por ejemplo, se puede construir una cadena a partir de los valores de varias variables. Para obtener más información sobre el objeto Respuesta en particular y sobre los objetos en general, consulte Uso de componentes y objetos y Envío de contenido al navegador web. Por ahora, sólo tenga en cuenta que agregar comandos de script a una página HTML se puede hacer de varias maneras.

Es aceptable incluir procedimientos escritos en el lenguaje de secuencias de comandos subyacente utilizando delimitadores ASP. Para obtener más información, consulte Trabajar con lenguajes de secuencias de comandos.

Cuando escribe un script JScript directamente, los comandos ASP pueden incluir bloques de declaraciones entre llaves. Estas estructuras también permiten la presencia de etiquetas y texto HTML. Ejemplo.

Esta es la versión de texto de una página.

Esta es la versión multimedia de una página.

Trabajar con directivas ASP

ASP proporciona directivas que no forman parte del lenguaje de programación utilizado: una directiva para generar datos y una directiva para procesar datos. En formato ASP directiva de salida

le permite mostrar el valor de una expresión en la pantalla. Esta directiva de salida es equivalente al comando Response.Write. Por ejemplo, se puede utilizar una expresión para mostrar la palabra Baltimore (el valor actual de una variable) en el navegador. le permite pasar datos a ASP que son necesarios para procesar el archivo “.asp”. El siguiente ejemplo muestra directivas para VBScript como lenguaje de secuencias de comandos principal en la página:

La directiva de procesamiento debe ser la primera línea del archivo ".asp". Si una página va a contener varias directivas, deben estar contenidas dentro del mismo par de delimitadores. No se permite incluir directivas de procesamiento en un archivo utilizando la declaración #include. (Para más información, consulte

El siguiente ejemplo establece el lenguaje de secuencia de comandos y la página de códigos:

Espacios vacíos en guiones

Si el idioma principal del script es VBScript o JScript, ASP elimina automáticamente los espacios en blanco que pueden aparecer en los comandos. En el caso de otros lenguajes de programación, estas lagunas se conservan. Esto garantiza que los comandos se interpreten correctamente en idiomas donde la ubicación y la sangría de los elementos son importantes. Espacios vacios son espacios, tabulaciones, retornos de carro y saltos de línea.

VBScript y JScript permiten dejar espacios después del delimitador de apertura y antes del delimitador de cierre. Esto hace que los comandos sean más fáciles de leer. Entonces, las instrucciones que se enumeran a continuación son correctas:

El espacio entre el delimitador de cierre de una declaración y el delimitador de apertura de otra se elimina automáticamente en ASP. Sin embargo, el uso de espacios facilita la lectura. Para mantener el espacio entre dos declaraciones, por ejemplo, al mostrar los valores de las variables en una declaración, debe utilizar el carácter de espacio HTML de no separación (). Por ejemplo:

@foreach (var elemento en filas) (//hacer algo)

Las expresiones o declaraciones anidadas no comienzan con el signo @...

< ul >@ foreach (var elemento en filas) ( if (item.Equals(x)) ( // hacer algo ) )

A menos que estén separados de la expresión o declaración externa por etiquetas no coincidentes

< ul >@foreach (var elemento en filas) (< li >@ if (item.Equals(x)) ( // hacer algo ) )

El @sign se utiliza en Razor para representar el valor de variables, expresiones y declaraciones en el navegador:

@FechaHora .Ahora @(algunaCondición? x:y )

Las variables dentro de expresiones y declaraciones no deben tener el prefijo @.

Si desea representar texto sin formato o etiquetas no coincidentes mientras está dentro de un bloque de declaración, use el signo @ seguido de dos puntos para indicarle a Razor que lo que sigue no es código C#:

@ if (item == x) // texto sin formato ( @: La hora es @ DateTime .Now ) @ if (item == x) // etiquetas no coincidentes ( @:< ul >) demás ( @:< ol >) Identificadores

Un identificador en C# es el nombre dado a un espacio de nombres, clase, variable, propiedad, método, interfaz, etc. Las reglas gobiernan lo que hace que un identificador sea válido. Está permitido utilizar una palabra clave de C# como identificador, pero si lo hace, debe utilizar el signo @ para evitar errores en tiempo de compilación. Se desaconseja el uso de una palabra clave como identificador, pero hay ocasiones en las que no puede evitar hacerlo.

Algunas sobrecargas de las clases HtmlHelper (páginas web y MVC) aceptan un objeto para representar los atributos HTML que se representarán como parte de la etiqueta que representa el ayudante. La siguiente El ejemplo agrega un atributo de estilo a un entrada de texto y establece su valor en ancho: 100%; :

@Html.TextBoxFor(modelo => nuevo (estilo = "ancho:100%;" ))

Cuando haces esto, eres creando un tipo anónimo con una propiedad llamada estilo para representar los atributos HTML. Si desea establecer el atributo de clase CSS mediante este método, debe agregar una propiedad al tipo anónimo llamado clase, que es una palabra clave de C#. Por lo tanto debes usar el signo @ para habilitar el uso de la clase en este caso:

@Html.TextBoxFor(modelo => modelo.FirstName, htmlAttributes: nuevo ( @class = "ancho completo"))

Un error que veo repetido con bastante frecuencia en los foros de ASP.NET es aplicar el signo @ a todas las demás propiedades del tipo anónimo, lo cual simplemente no es necesario. Algunas personas incluso piensan que el signo @ utilizado aquí es parte de las reglas de sintaxis de Razor. No lo es. Su uso aquí precedió a Razor por mucho.

Literales de cadena textuales

Un literal de cadena textual en C# consta del signo @ seguido de una cadena literal entre comillas dobles y termina con un punto y coma, p.

var s = @"Hola mundo";

Dos beneficios de usar un literal de cadena textual incluyen el hecho de que solo necesita escapar de las comillas dobles (duplicándolas); y la cadena puede abarcar varias líneas de código sin necesidad de caracteres de continuación. Por estas razones, los literales de cadena textuales son más adecuados para representar rutas (que de otro modo podrían necesitar que se escapen las barras diagonales) y patrones de expresión regular (que también pueden requerir que se escapen las barras invertidas).

Regex re = nueva expresión regular (@"\w\d(1,3)\.\d(1,3)\.\d(1,3).\d(1,3)\w" );

También son útiles para representar grandes bloques de texto si es necesario incluirlos en el código de manera legible, como declaraciones SQL que podrían usarse en aplicaciones de páginas web:

var sql = @"SELECT p.ProductName, o.UnitPrice, o.Quantity, (o.UnitPrice * o.Quantity) - (o.UnitPrice * o.Quantity * o.Discount) As TotalCost FROM OrderDetails o INNER JOIN Products p ON o.IDProducto = p.IDProducto DONDE o.IDOrderID = @0";

El uso del signo @ en este contexto una vez más no tiene nada que ver con la sintaxis de Razor.

Resumen

Si alguna vez se ha preguntado cuándo y dónde debería utilizar el signo @ en su código ASP.NET, esperamos que este artículo le haya ayudado a resolver su confusión.

Clase de página

Ahora que has visto lo que es ciclo vital página y ha aprendido cómo una página contiene controles, no está de más señalar que la página en sí también se instancia como un objeto de control. En realidad, todos los formularios web son en realidad instancias de la clase Página de ASP.NET, que se encuentra en el espacio de nombres. Sistema.Web.UI.

Probablemente ya lo hayas adivinado al notar que cada clase de código subyacente hereda claramente de System.Web.UI.Page. Esto significa que cada formulario web que cree obtiene inmediatamente una gran cantidad de funcionalidades, como el método FindControl() visto anteriormente y la propiedad IsPostBack. Además, heredar de Page también le da a su código acceso a las siguientes propiedades extremadamente útiles:

Muchas de estas propiedades corresponden objetos internos, que podría usarse en páginas web ASP clásicas. Sin embargo, en versión clásica ASP accedió a esta funcionalidad utilizando objetos integrados que siempre estuvieron disponibles. En ASP.NET, cada uno de estos objetos integrados corresponde en realidad a una propiedad de página, que proporciona una instancia de una clase completamente funcional.

Estos objetos se describen con más detalle en las secciones siguientes.

Objetos de sesión, aplicación y caché

El objeto Session es una instancia de la clase. Sistema.Web.SessionState.HttpSessionState. Está diseñado para almacenar cualquier tipo de datos de usuario que deban persistir entre solicitudes de páginas web. El objeto Session proporciona acceso al diccionario a un conjunto de pares nombre-valor que representan datos de usuario para esa sesión. El estado de la sesión se utiliza a menudo para mantener información como el nombre y la identificación del usuario, el carrito de compras u otros elementos que se eliminan cuando el usuario ya no visita las páginas del sitio web.

El objeto Aplicación es una instancia de la clase. System.Web.HttpApplicationState. Al igual que el objeto Session, también es un diccionario de datos de nombre-valor. Sin embargo, estos datos son globales para toda la aplicación.

En cuanto al objeto Cache, es una instancia de la clase. Sistema.Web.Caching.Caché. También almacena información global, pero ofrece un mecanismo de almacenamiento más escalable porque ASP.NET puede eliminar objetos si el servidor se queda sin memoria. Al igual que otros conjuntos de estados, es esencialmente una colección de objetos de nombre-valor, pero también puede establecer políticas de caducidad personalizadas y definir dependencias para cada elemento.

Elegir cómo implementar la gestión estatal es una de las tareas clave en el desarrollo de una aplicación web.

Solicitar objeto

El objeto Request es una instancia de la clase System.Web.HttpRequest. Este objeto representa los valores y propiedades de la solicitud HTTP que resultó en la carga de la página. Contiene todos los parámetros relacionados con la URL, así como todos los demás datos enviados por el cliente. Gran parte de la información proporcionada por el objeto Solicitud está envuelta en abstracciones que son más alto nivel(por ejemplo, el contenedor del modelo de control web ASP.NET), por lo que no es tan importante como lo era en el desarrollo ASP clásico.

Sin embargo, el objeto Solicitud aún se puede utilizar, por ejemplo, para averiguar qué navegador está utilizando el cliente o para crear cookies y luego examinar su contenido.

La siguiente tabla enumera algunas de las propiedades más utilizadas del objeto Solicitud:

Propiedades del objeto HttpRequest Descripción de la propiedad
ID anónimo Identifica de forma única al usuario actual si se ha habilitado el acceso anónimo.
Ruta de aplicación y ruta de aplicación física ApplicationPath recupera información sobre la ubicación del directorio virtual (URL) de una aplicación ASP.NET y PhysicalPath recupera información sobre la ubicación de su directorio "real"
Navegador Proporciona una referencia a un objeto HttpBrowserCapabilities, que contiene propiedades que describen varios funcionalidad navegador, por ejemplo, si admite controles ActiveX, cookies, VBScript y marcos
Certificado de cliente Un objeto HttpClientCertificate que proporciona el certificado de seguridad para la solicitud actual, si existe.
Galletas Proporciona una colección de cookies enviadas con esta solicitud.
FilePath y CurrentExecutionFilePath Devuelve la ruta del archivo real (relativa al servidor) para la página que se está ejecutando actualmente. FilePath representa la página que inició el proceso de ejecución. Esto es lo mismo que CurrentExecutionFilePath, a menos que haya movido al usuario a una nueva página sin una redirección (por ejemplo, usando el método Server.Transfer()), en cuyo caso CurrentExecutionFilePath refleja la nueva página y FilePath especifica la página original.
Forma Representa una colección de variables de formulario enviadas de vuelta a la página. En la mayoría de los casos, en lugar de utilizar una colección determinada, recuperará esta información de las propiedades del control.
Encabezados y variables del servidor Proporciona una colección de diccionario de encabezados HTTP y variables de servidor, indexados por nombre. Estas colecciones consisten en gran medida en información de bajo nivel enviada por el navegador junto con la solicitud web (por ejemplo, información sobre el tipo de navegador, la funcionalidad que admite, las características instaladas). configuración de idioma, identidades utilizadas para autenticar datos, etc.). Normalmente, esta información es mucho más fácil de obtener de otras propiedades del objeto HttpRequest o clases ASP.NET de nivel superior.
IsAuthenticated y IsSecureConnection Devuelve verdadero si el usuario se autentica correctamente y está conectado a través del protocolo Secure Sockets Layer (SSL).
Es local Devuelve verdadero si el usuario solicita la página desde la computadora local
Cadena de consulta Proporciona parámetros pasados ​​en la cadena de consulta.
URL y URLReferrer Devuelve un objeto Uri que representa la dirección de la página actual y la página de donde proviene el usuario ( pagina anterior que contiene un enlace a esta página)
Agente de usuario Una cadena que representa el tipo de navegador. Internet Explorer proporciona el valor MSIE para esta propiedad. ASP.NET utiliza esta información para determinar qué tipo de navegador es estamos hablando de y, por lo tanto, determinar qué funcionalidad debe admitir este navegador (como cookies, secuencias de comandos JavaScript etc.). Esto, a su vez, puede afectar la forma en que se representan los controles web.
Dirección de host de usuario y nombre de host de usuario Recupera información sobre la dirección IP y el nombre DNS del cliente remoto. También se puede acceder a esta información a través de la colección ServerVariables. Sin embargo, debido a la transmisión direcciones de red(Traducción de direcciones de red - NAT) no siempre es significativo. Dependiendo de cómo se conecten a Internet, muchos clientes pueden compartir la misma dirección IP (por ejemplo, la dirección IP de la computadora de puerta de enlace). Además, la dirección IP también puede cambiar después de realizar varias solicitudes.
Idiomas del usuario Proporciona una matriz de cadenas ordenadas que enumera las preferencias de idioma del cliente. Puede resultar útil al crear páginas multilingües.
Objeto de respuesta

El objeto Response es una instancia de la clase System.Web.HttpResponse y representa la respuesta del servidor web a una solicitud del cliente. Con desarrollo ASP clásico Objeto de respuesta era la única forma de enviar texto HTML mediante programación al cliente.

Los controles de servidor ahora contienen métodos anidados orientados a objetos para representarse a sí mismos. El desarrollador sólo necesita establecer los valores de sus propiedades. Así que el objeto Respuesta ya no es tan central como antes.

La siguiente tabla enumera algunos de los miembros más utilizados de la clase HttpResponse:

Miembros de la clase HttpResponse Método o propiedad Descripción
Salida del búfer Cuando esta propiedad se establece en verdadero (el valor predeterminado), la página no se envía al cliente hasta que se procesa y está lista para enviarse en su totalidad, en lugar de enviarse en partes. En algunos escenarios específicos tiene sentido establecer esta propiedad en falso.
El ejemplo más obvio es cuando un cliente descarga un archivo grande. Si la propiedad BufferOutput se establece en falso, el cliente verá un cuadro de diálogo Guardar y podrá seleccionar un nombre de archivo antes de que el archivo se descargue por completo.
Cache Esta propiedad se refiere al objeto HttpCachePolicy, que le permite configurar el almacenamiento en caché de resultados.
Galletas Esta propiedad proporciona acceso a la colección de cookies que se envían junto con la respuesta. Se puede utilizar para agregar cookies adicionales.
Expires y ExpiresAbsolute Estas propiedades se pueden utilizar para almacenar en caché el HTML renderizado de una página, mejorando el rendimiento en solicitudes posteriores.
EstáClienteConectado Este es un valor booleano que indica si el cliente está conectado al servidor. Si aún no está conectado, es posible que deba detener alguna operación de ejecución prolongada.
Redirigir() Este método hace que el navegador solicite una URL diferente que apunte a una nueva página de aplicación web o a un sitio web diferente.
Redireccionamiento permanente() Este método redirige el navegador a la nueva URL, muy parecido al método Redirect(). La diferencia es que usa el código. Estados HTTP 301 (que indica que la página se ha movido permanentemente) en lugar de 302 (que indica que la página se ha movido temporalmente)
RedirectToRoute() y RedirectToRoutePermanent() Estos métodos son similares a los métodos Redirect() y RedirectPermanent(). La única diferencia es que utilizan una ruta (un patrón de URL registrado que no se asigna directamente a la página)
Transferir() Este método le dice a ASP.NET que deje de procesar pagina actual y vaya a la nueva página (especificada) con el formulario web. En este caso no se requiere el ciclo completo de envío y notificación al navegador y al usuario de la aplicación web.
Solicitud de transferencia() Este método es similar a Transfer(), pero le permite transferir al usuario a un tipo diferente de página. Por ejemplo, se puede utilizar para enviar a un usuario desde un formulario web ASP.NET a una página HTML.
Cuando se utiliza, todo el proceso de IIS entra en acción para procesar el nuevo recurso, junto con todos los módulos HTTP asociados. Pero hay una serie de limitaciones importantes asociadas con el método TransferRequest(). Para utilizarlo hay que utilizarlo. servidor web IIS 7 en modo integrado. Además, deberá liberar el estado de la sesión (si se adquirió) para evitar largas demoras.
Tipo de contenido Esta propiedad representa un encabezado que le dice al navegador qué tipo de contenido debe recibir. Normalmente, los formularios web ASP.NET, como todas las páginas web, utilizan contenido de texto/html (texto mezclado con HTML). Sin embargo, en principio se podría crear un controlador HTTP especial para servir otros tipos de contenido.
Flujo de salida Esta propiedad representa los datos enviados al navegador como un flujo de bytes de bajo nivel. Se puede utilizar para conectarse al modelo de subprocesos .NET.
Escribir() Este método le permite escribir texto directamente en el flujo de respuesta. Generalmente es mejor utilizar un modelo de control y dejar que los controles generen su propio marcado HTML. Intentar utilizar el método Response.Write() con un modelo de control elimina la capacidad del desarrollador de decidir dónde debe ir el texto en la página.
Sin embargo, el método Response.Write() es importante en situaciones en las que los controles que generan su propia representación HTML deben crearse desde cero.
BinaryWrite() y WriteFile() Estos métodos le permiten tomar contenido binario de una matriz de bytes o un archivo y escribirlo directamente en el flujo de respuesta. No tiene sentido usarlos junto con los controles del servidor, pero pueden resultar muy útiles al crear un controlador HTTP personalizado.
Por ejemplo, puede crear un controlador HTTP que lea los datos de un documento PDF desde una entrada de la base de datos y los escriba directamente en el flujo de respuesta utilizando el método BinaryWrite(). En el lado del cliente, el resultado final se verá exactamente igual que si el usuario hubiera subido un archivo PDF estático. Al escribir contenido que no sea HTML, asegúrese de establecer la propiedad ContentType en el valor apropiado
Moverse entre páginas

Mayoría función importante La clase HttpResponse proporciona un pequeño conjunto de métodos que le permiten navegar de una página a otra. El más universal de ellos es el método Redirect(), que permite redirigir al usuario a otra página. A continuación se muestra un ejemplo de su aplicación:

// Redirigir a un archivo en el directorio actual. Respuesta.Redirect("PageFlow.aspx"); // Redirigir a otro sitio web. Respuesta.Redirect("http://www.google.com");

El método Redirect() requiere ciclo completo envío. Básicamente, envía un mensaje al navegador que hace que solicite una nueva página.

El método Redirect() tiene una sobrecarga que toma un valor booleano como segundo parámetro. Este valor especifica si el código de la página debe continuar ejecutándose. De forma predeterminada, aunque Redirect() redirige al usuario y cierra la conexión, cualquier código restante en el método se ejecutará junto con el resto de los eventos de la página. Esto permite la limpieza si es necesario. Pero si el segundo parámetro se pasa como verdadero, ASP.NET dejará de procesar la página inmediatamente, lo que podría reducir carga de trabajo servidor web.

Si necesita transferir al usuario a otro formulario web dentro de la misma aplicación web, puede adoptar un enfoque más rápido utilizando el método Server.Transfer(). Sin embargo, este método tiene algunas peculiaridades. Debido a que la redirección ocurre en el lado del servidor, la URL original permanece en la ventana del navegador web del cliente. Básicamente, el navegador no tiene forma de saber que en realidad está mostrando una página diferente. Esta limitación causa problemas cuando el cliente actualiza o agrega la página a favoritos.

Además, el método Server.Transfer() no puede transferir el control a una página que no sea ASP.NET o a una página web ubicada en otra aplicación web o sitio web.

Para pasar de una página a otra, hay otra técnica disponible: la publicación entre páginas. Le permite crear una página que se envía a otra página, lo que permite pasar toda la información del estado de la vista y el contenido de cualquier control.

En ASP.NET 4, la clase HttpResponse introdujo otro método para redirigir al usuario: RedirectPermanent(). Este método hace lo mismo que Redirect(), es decir. envía un mensaje de redireccionamiento al navegador indicando que debe solicitar una nueva página. Sin embargo, en lugar del código de estado HTTP 302 (redireccionamiento temporal), utiliza el código 301 (que indica un redireccionamiento permanente). Para los navegadores web esta diferencia no importa, pero para los motores de búsqueda es muy importante. Cuando un rastreador web explora un sitio web y recibe un código de estado 301, actualiza el directorio con su motor de búsqueda, llenándolo con información sobre la nueva URL.

Esto significa que los métodos Redirect() y RedirectPermanent() deben usarse muy de diferentes maneras. El método Redirect() debe usarse para proporcionar navegación normal y control de flujo en la aplicación (por ejemplo, cuando el usuario pasa por algún tipo de proceso de verificación), y el método RedirectPermanent() debe usarse cuando se solicita una URL antigua que fue Anteriormente era compatible pero ya no se utiliza.

Normalmente, el método Redirect() se llamará en algún lugar del código del formulario web, mientras que el método RedirectPermanent() se llamará en el código de la aplicación, más específicamente en el método Application_BeginRequest() dentro del archivo global.asax. Esto le permitirá administrar todas sus redirecciones persistentes en un solo lugar sin tener que guardar resguardos de páginas antiguas. A continuación se muestra un ejemplo:

void protegido Application_BeginRequest(remitente del objeto, EventArgs e) ( // La aplicación web ya no contiene la página about.aspx if (Reguest.FilePath == "/about.aspx") ( Response.RedirectPermanent("/about/about-Us . aspx"); ) // (Agregue redirecciones adicionales aquí.) )

Objeto de servidor

El objeto Servidor es una instancia de la clase System.Web.HttpServerUtility y proporciona una variedad de métodos y propiedades auxiliares, que se enumeran en la tabla:

Miembros de la clase HttpServerUtility Método o propiedad Descripción
Nombre de la máquina Propiedad que representa el nombre de la computadora en la que se ejecuta la página. Este es el nombre del servidor web utilizado por la computadora para identificarla ante el resto de la red.
ObtenerÚltimoError() Recupera el objeto de excepción para el error más reciente (o una referencia nula si no existe). Este error debería haber ocurrido al procesar la solicitud actual y no se manejó. Se utiliza con mayor frecuencia en un controlador de eventos de aplicación que busca situaciones de falla.
HtmlEncode() y HtmlDecode() Reemplaza una cadena normal con una cadena válida caracteres HTML(y viceversa)
UrlEncode() y UrlDecode() Reemplaza una cadena normal con una cadena de caracteres URL válidos (y viceversa)
RutaMapa() Devuelve la ruta física a un archivo correspondiente a un específico camino virtual a un archivo en el servidor web. Llamar a MapPath() con / devuelve la ruta física al directorio raíz de la aplicación web. También admite rutas que contienen el carácter de tilde (~) que representa el directorio raíz de un sitio web (por ejemplo, ~/homepage.aspx).
Transferir() Transfiere la ejecución a otra página web en la aplicación actual. Este método es similar a Response.Redirect(), pero es más rápido. No se puede utilizar para mover al usuario a un sitio ubicado en un servidor web diferente o a una página que no sea ASP.NET (como HTML o ASP).

El método Transfer() es la forma más rápida de mover al usuario a otra página de la aplicación. Cuando se utiliza este método, no se produce un ciclo de envío completo. En cambio, el motor ASP.NET simplemente carga una nueva página y comienza a procesarla. Como resultado, la URL que se muestra en el navegador del cliente no cambia.

MapPath() es otro método útil Objeto de servidor. Por ejemplo, supongamos que desea cargar un archivo llamado info.txt desde el directorio virtual actual. En lugar de codificar la ruta, puede utilizar el método Server.MapPath() para convertir la ruta relativa a su aplicación web en una ruta física completa.

Codificación HTML y URL

La clase Servidor también contiene métodos que convierten cuerdas regulares en una representación que se puede utilizar de forma segura como parte de una URL o mostrarse en una página web. Por ejemplo, digamos que va a mostrar el siguiente texto en una página web:

Etiqueta

Se utiliza para indicar un párrafo.

Si intenta escribir esta información en una página o colocarla en un control, obtendrá lo siguiente:

Se utiliza una etiqueta para identificar un párrafo.

Texto

No aparecerá y el navegador interpretará que incluye un párrafo. Para evitar este comportamiento automático, deberá convertir valores potencialmente problemáticos en equivalentes HTML especiales. Por ejemplo,< превратится в < в окончательной HTML-странице, а браузер отобразит этот символ как


Arriba