Professional Documents
Culture Documents
En 21 Lecciones PDF
En 21 Lecciones PDF
12 <& Response Write(*Nuestra primera piginacp>") &>
13
4
2 ")
‘Ahora su pagina funcionard como se espera.
Tome en cuenta que algunas conversiones provocaran la pérdida de datos.
Precaucin | po: ejemplo, siconvierte un namero de punto fiotante a entero, perders
‘todos los valores decimales.
Hay otra forma de convertir tipos de datos en VB.NET. Muchos de ellos cuentan con un mé-
todo que le permite convertir de un tipo a otro. Estos métodos siempre empiezan con To y
terminan con el tipo de dato al que se convertir4, (Veremos estos métodos posteriormente en
“Légica de bifurcacién™.)
Por ejemplo, para convertir un Integer a String, podemos utilizar Tost ring:
Dim MiEntA As Integer = 4
Dim MiCadena As String
Micadena = MiEntA.ToString
No obstante, tenga cuidado con estas funciones debido a que algunas no se permiten, Por
ejemplo, no puede convertir de String a Integer con el método ToInt32. Verd estos métodos
en los ejemplos de cédigo.
Matrices
Las matrices son frecuentemente los tipos més tiles de cualquier lenguaje de programacién,
aunque de los més dificiles de comprender. Cada lenguaje tiene sus propias reglas para las
‘matrices, por lo que es fic confundirse. El NET Framework simplifica este proceso y genera
un conjunto de reglas para todas las matrices.
Las matrices son grupos de variables almacenadas en conjunto a las que puede hacer referen-
cia de manera individual mediante sus indices. Imagine un cartén de huevo. El propio cartén es
el contenedor y cada huevo es una variable. Puede hacer referencia a cada huevo por su fndice:
huevol, huevo2, etc. (La figura 3.3 demuestra este concepto.) Esto le permite almacenar en
conjunto elementos similares.
Las matrices en VB.NET estén basadas en cero, lo que significa que el primer elemento en
una matriz se encuentra en el indice 0. De esta forma, el tiltimo indice de una matriz siempre
seré uno menor a la cantidad de elementos en la matriz. Todas las variables de una matriz
debern tener el mismo tipo de dato, no podré tener tipos mezclados. Veamos una sencilla de-
claracién de una matriz:66 Leccion 3
Dim WiMlatriz(6) As Integer
Dim MiNatriz2() As String = {"perro", ‘gato, “caballo, _
"elefante", *Llana‘}
Ficura 3.3
Una matriz es como un
carién de huevo.
En la primera Ifnea s6lo declaré una matriz para seis elementos (ahora vacfos) de tipo
Integer. Esto significa que el tihimo elemento en la matriz estaré en el indice 5. La cantidad
entre paréntesis de la I{nea 1 le indica cudntos elementos habré en la matriz, Dicha canti-
dad también se conoce como longitud de la matriz. Si jiera declarar explicitamente la
matriz, como en la linea 2, deberd omitir el ndimero y utilizar Haves ({ }) para asignar los va-
lores. La longitud de esta segunda matriz es de 5. “Perro” esté en el indice 0, y podré hacer
referencia a él como MiMatriz2(@); a “llama”, como MiMatriz2(4).
El listado 3.3 le muestra un ejemplo.
Listapo 3.3 _Declaracion de una matriz y uso de sus elementos
1
:
aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Erase arrColores
La instruccién Erase establece cada valor de la matriz.a Nothing, que es la forma
que VB.NET tiene para indicar que no hay ningtin valor almacenado en la variable:
Nota La clase Array de VB.NET ofrece mas funciones para e! manejo de matrices.
‘Vea la documentacién en el SDK del .NET Framework para encontrar mayor
informacion.
Operadores
Estos son simbolos que se utilizan para realizar alguna tarea. Por ejemplo, el operador = se
puede utilizar para asignar valores:
strNombre = "Hola"
‘Ya deberia estar familiarizado con muchos de los operadores puesto que los utiliza en su vida
diaria. La tabla 3.3 muestra todos los operadores de VB.NET en orden de precedencia,
Tasia 3.3 Operadores de VB.NET
Funcién Operador
Exponenciacién a
Negacién unaria be
Multipticacién, divisi6n entera (6\4= 1) 4
isign (6 /4= 15) 1
Médulo o residuo (6 mod 4= 2) Mod
‘Suma, resta +
Negacién, ¥, O y O exclusivo de bits
Coneatenscién
Igual, distinto, menor que, mayor que
Menor o igual que, mayor o igual que
Relacional
Asignacién
Negacién, ¥, O y O exclusivo légicos
BivNor, BitAnd, BitOr, BitXor
&,+ (para eadenas)
o>
ea
‘TypeOf...Is, Is, Like
NOT, AND, OR, XOR
‘También puede valerse de los paréntesis para modificar el orden de precedencia. Por ejemplo,
445*3 = 19, mientras que (4+5)*3 = 27.Uso de Visual Basic.NET
69)
Légica condicional
Esta le permite especificar qué eédigo deberd ejecutarse de acuerdo con las condiciones en-
contradas. Es un poderoso mecanismo bisico para todas las aplicaciones. Esta seccién tratard
distintos métodos para manejar la Iégica condicional: las instrucciones 1f y Ca:
Instrucciones If
Estas son La forma més simple de légica condicional, El flujo del procesamiento de esta ins-
trucci6n es sencillo: si algo ocurre o se cumple cierta condicién, entonces se realiza una ac-
cién espectfica.
He aqui un ejemplo real de una instruccién If: Imagine que labora en una linea de ensam-
blaje de una fébrica de relojes, y que su trabajo es armar los relojes. Su jefe le indica: “Si se
rompe la manecilla de la hora, tire el reloj”
Veamos la sintaxis:
If (condicién) Then
codigo
End If
Si se cumple la condicién, ejecutard el cédigo entre las Ifneas If y End If. Si no se cumple,
tan s6lo continuard sin ejecutar el cédigo. El listado 3.4 muestra algunos ejemplos,
Listapo 3.4 _Instrucciones If sencillas
1: 68 Page Language="VB" %>
")
antGontador = intcontador + 1
Loop While intcontador < 10Uso de Visual Basic.NET
Do While intContador < 10
Response.Write intContador & "
*)
Next
0:
For intContador = 10 to 1 step -1
Response.Writo(intContador & "
*)
Next
*
S{76
Leccion 3
El primer bucle muestra los ntimeros del 1 al 10, mientras que el segundo lo hace en orden
inverso.
tra variedad de este bucle es For. ..Zach, Este bucle itera por todos los elementos de una
coleccién, como una matriz. Por ejemplo:
Dim arrDiassemanas() As String = {"Lune
“Wiéreoles*, "Jueves", *Viernes*}
Dim strDia As String
For Each strDia In arrDiasSenanas
Response.Write(strDia & "
")
Next
“martes”, _
La primera Ifnea genera una matriz de cadenas con cinco de los dfas de la semana. La cuarta
linea itera en cada elemento de la matriz. La variable strDia es tan s6lo un contador para el
bucle, podrfa establecer cualquier otra que desee. E! bucle asigna cada valor de la matriz a
Ia variable strO4a, y usted lo desplegard en la Ifnea cinco. El resultado serd que los dfas de
semana aparecerin en el explorador Web, como se muestra en la figura 3.6.
Ficura 3.6
Uso de un bucle
For. . .Each para iterar
por los elementos de
. Mae:
Naees
ive
Views
Bucles infinitos
Observe que ha establecido manualmente los incrementos o condiciones en sus
bucles While y Do, mientras que en los For se hace auiométicamente, Esto es muy
importante, de otro modo acabaria sumergido en un buele infinito, aquel que nunca finaliza,
No s6lo sera terrible para quienes visiten su sitio, sino que también acabara rapidamente con
los recursos de su sistema y provocaré fallas,aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Uso de Visual Basic.NET 79|
En la linea 13 escribird el producto de esios pardmetros al explorador Web mediante Response.
Write, y ena linea 14 finalizard el método. Ahora que ha creado el método, podré utilizarlo
en cualquier parte de la pagina. Cabe indicar que este método no se ejecutara a menos que
usted lo ordene explicitamente, no lo haré s6lo porque usted lo coloeé ahi.
Frenuno wo En a linea 5 usted lama (o ejecuta) al método, Esto te indica al programa que
fae - i
ejecute el cédigo del método y que regrese a la Iinea 5 al terminar (podré ver
la légica de bifurcacién aqui). Cuando lame a MultipLicarNumeros, especificard los pa-
metros que definié el método: dos enteros, Mult ip1icarNuneros los tomaré y realizard sus
tareas.
Las Iineas 7 y 9 hacen algo similar, pero pasan parémetros distintos al método. Esto es parte
de los controles de la légica de bifurcacién: podré ejecutarlos desde cualquier parte y darles
distintos pardmetros para su ejecuci6n. Esto producira lo que se aprecia en la figura 3.7.
Ficura 3.7
Uso de los métodos
ara ejecuar cédigo
encapsulado,
a
nal, tal vez recuerde como ejecutar
;nte forma:
Si ya conoce a VBScript y al ASP tradi
Precauclin | ics métodos y las funciones de la
MultiplicarNuneros 8, 9
Lo anterior se hace sin paréntesis. Sin embargo, con VB.NET y ASPNET, siem-
pre debera incluirlos al ejecutar una funcién, o de lo contrario se produciré
un error,aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Uso de Visual Basic.NET
se puede usar dentro de la clase. Esto es itil para evitar que otro c6digo modifique las va-
riables que sean importantes para usted. No obstante, estos detalles no serdn tratados en esta
leccién; por tal motivo, le recomiendo que vea una guia de programacién orientada a obje-
tos para encontrar mayores detalles.
El método EstablecerHora define las propiedades segundo, minuto y hora de la clase de
acuerdo con los parémetros indicados. En su pagina ASP.NET puede hacer lo siguiente:
Dim objReloj As New Reloj
objReloj .EstablecerHora (60,4, 12)
‘objReoj .Segundo = 59
La primera linea declara un objeto objRe10j cuyo tipo de dato se basa en la clase Reo}.
Podré establecer las propiedades 0 ejecutar los métodos de esta clase mediante el objeto
obje1oj, como se aprecia en la segunda y tercera Ifneas. Al encapsular cédigo en comin
como lo ha hecho, puede imaginar la programacién como el simple manejo de objetos.
Nota Ha colocado su clase dentro del bloque de declaracion de codigo en este
caso, pero normalmente estarfa en otro archivo para facilitar la lectura del
cédigo. En las clases de VB.NET normalmente este archivo tencria la extensi6n
vb. Aprenderé mas de ello en la leccion 15, "Uso de objetos de negocios”.
zY qué hay con New?
La palabra clave New es muy importante, se utiliza para generar un objeto. Por ejemplo, lo
siguiente establece una variable con el tipo de dato Re1oj, pero no genera el objeto (esto es,
aunque la variable sabré que sera de tipo Reloj, atin no ha generado el objeto):
Dim objReloj As Roloj
La palabra clave New genera el objeto. Sin New s6lo indicarfa que la variable obj Re10j conten-
dr una encarnacién o instancia de la clase Reo}. Para generar el objeto después de declarar
la variable que lo contendré, podria escribir lo siguiente:
objReloj = New Reloj
‘También puede generar el objeto de la siguiente forma:
Dim objReloj As Reloj = New Reloj
Esto es similar a utilizar 1a palabra clave New después del nombre del objeto.
Herencia
sta es una parte importante de las clases y la programacién orientada a objetos. No sera tratada
profundamente aqui, pero conocerd sus fundamentos para aplicar en sus paginas ASP.NET.
87)aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Uso de Visual Basic.NET 91)
Tapia 3.6 Continuacion
Funcién Descripci6n
replace(expresién, buscar, Reemplaza buscar en la expresi6n con
reenplazo(, iniciol, cantided reemp1azo, a partir de inicio; cantidad es el numero de
, comparacién)}1) reemplazos por hacer; cuyo valor predeterminado es —1
| (todos los reemplazos posibles); conparacién ¢s similar a
instr.
right (cadena, longitud) Devuelve una cadena que contiene una cantidad indicada
de caracteres a la derecha de una cadena.
Para futuros expertos de VB.NET:
hacia donde ir
|
| Visual Basic.NET es un poderoso lenguaje de programacin amigable para los desarrolladores
| que le permitird generar aplicaciones ASP.NET complejas y de nivel empresarial. Aunque no
hemos profundizado en é1, va podrd dar sus primeros pasos en las paginas ASP.NET. Para ob-
tener mayor informacién de VB.NET, vea la siguiente informacién:
|
|
+ Referencia para el desarrollador en MSDN (nsdn.microsoft .com)
+ Referencia en Internet de NET Framework (www.microsoft.com/net)
+ Laespecificaci6n y referencia del lenguaje de VB.NET en la documentacién del SDK
de NET.
jEso no es ASP!
La gran diferencia entre ASP y ASPNET tratada en la leccién actual es el cambio de VBScript
a VB.NET. Aunque gran parte de su sintaxis es similar, hay algunas modificaciones que pueden
tomar por sorpresa a un nuevo desarrollador de ASP.NET.
VB.NET tiene muchas modificaciones. Ahora es totalmente orientado a objetos, lo que podria,
no serle tan extrafio si usted ya es un desarrollador en VBScript. Las clases se utilizan mucho
en el .NET Framework, mientras que en el ASP tradicional rara vez se emplean. Es necesario
(que aprenda a utilizarlas 1o antes posible.
Otro gran cambio de ASP a ASP.NET es el uso del modelo controlado por eventos. Aunque el
mecanismo subyacente de este modelo se basa en una mecénica de peticiGn y respuesta, hay
una nueva capa de abstraccién que permite a los desarrolladores utilizar mAs tiempo en generar
aplicaciones que en preocuparse por los detalles del envio de datos. Aprenderd mas de esto en.
las lecciones 5 y 6.
El apéndice B, “Errores comunes en ASP.NET”, lista algunos problemas que pueden tener los
desarrolladores de ASP conforme cambien hacia ASP.NET.Leccién 3
Resumen
En esta leccién aprendié a generar sus propias pagiras ASPNET con VB.NET. A partir de
aqui deberd tener un buen dominio de los fundamentos de tz programacién que le permitiran
generar paginas més complejas.
Esta leccién empez6 con un vistazo a las variables en VB.NET. Las variables son lugares
en Ja memoria que puede manejar a través de sus nombres. Hay 10 tipos de datos basicos para
las variables en VB.NET, divididos en cinco categorias: enteros, ntimeros de punto flotante,
booleanos, cadenas y fechas y horas.
Las matrices son grupos de variables que se pueden utilizar a través de sus indices. Son tiles
para almacenar informacién similar en un solo lugar. En VB.NET todas las matrices inician
con un indice de 0, No puede generar alguna que inicie con un valor distinto de cero.
Conocié tres tipos de Iégica: condicional, bucles y bifureacién. La logica condicional se vale
de las instrucciones If y Case para evaluar condiciones. La de bucles utiliza a While, Do y For
para ejecutar bloques de cédigo en varias ocasiones. La bifurcaci6n utiliza métodos y funcio-
nes para realizar alguna accién, aunque las funciones pueden devolver resultados.
También conocié los eventos, que son cosas que pueden suceder en su aplicacién, y los con-
troludores de eventos, que son Ios métodos que realizan alguna accién cuando se presenta un
evento, Son muy similares a los métodos pero se distinguen por sus listas de parimetros.
Por tiltimo, se le presentaron las clases y la herencis. Examiné las clases, que son definicio-
nes de objetos. Agrupan un eddigo comin para representar una entidad con propiedades y
métodos, Las clases son una parte importante del NET Framework y ASP.NET. La herencia
\e permite extender la funcionalidad de clases existentes para cumplir con sus necesidades, y
sustituir métodos que no las cumplan,
En esta lecci6n conocié muchas de las tareas més complejas en la programacién con ASP.NET.
Una vez que pueda generar ficilmente métodos, controladores de eventos y clases, jpodra
elaborar cualquier pagina ASP.NET!
En la siguiente leceién aprenderd a utilizar CH, un lenguaje que se ha disefiado para facilitar el
desarrollo de aplicaciones empresariales orientadas a Web. C# se deriva de C y C++, yen
muchos aspectos se parece a Java, por lo que deberd estar familiarizado con gran parte de
sui sintaxis si ha desarrollado en esos lenguajes. También exploraré parte de los objetos que se
utilizan con mayor frecuencia en ASP.NET.Uso de Visual Basic.NET
93)
Preguntas y respuestas
P {VB.NET distingue entre maydsculas y mindsculas?
R_ No. Por ejemplo, los nombres Mi¢lase y miclase son idénticos.
P {Qué sucedié con el tipo Variant?
R
Si yaesté familiarizado con versiones anteriores de VB, recordard que el tipo variant
era genérico y se utilizaba para representar cualquier variable que no hubiese sido
declarada con algtin tipo especffico. En VB.NET, el Variant se ha reemplazado con el
tipo Object.
Taller
Este taller le permitird reforzar los conceptos tratados en la presente lecci6n, Enel apéndice A
encontrard las respuestas.
Cuestionario
1. Cudndo deberfa utilizar un bucle For? {Cuando uno Whils
2. gCudl es el resultado del siguiente cédigo?
Dim I As Integer = 5
Do
Response.Write(I & * *)
I=1+2
Loop Until 1 > 10
3. Cudl es el resultado del siguiente codigo?
Dim 1 As Integer = 5
Do
Ter+2
Response.Write(I & * *)
Loop until I> 10
4, 2Cudles son los pardmetros estndar de un controlador de eventos de las paginas
ASP.NET?
Ejercicio
1. Cree una pagina ASPNET con una clase que lo represente a usted, con propiedades que
describan el color de su cabello, de sus ojos y su fecha de nacimiento. Utilice la propie-
dad dayotweek del tipo de dato datetime para determinar el dia de la semana en que
nacié, La propiedad dayofweek devuelve un entero, conviértalo al dia de la semana.
Ejecute este método siempre que el usuario haga clic en el botén Enviar, y despliegue
el resultado en el explorador Web.PARTE 1
LECCION 4
Uso de objetos ASP.NET
con C# y VB.NET
En la leccién anterior aprendié a crear sus propias paginas ASP.NET con VB.NET.
Conocié varias estructuras para controlar sus pSginas, entre ellas los bucles, las ins-
trucciones condicionales, las funciones y los eventos. Estas estructuras le permiten
crear poderosas paginas ASP.NET.
No obstante, si todo eso fuera lo tinico que pudiera hacer ASP.NET, no seria fantds-
tico para el desarrollo en Web, Como parte del .NET Framework, ASP.NET puede
aprovechar cientos de clases y objetos integrados que mejoran y extienden la fun-
cionalidad de sus péginas. En la presente leccién estudiard algunos de los objetos
comunes que serdn utilizados en este libro,
‘También conocer a C# (Ci Sharp 0 Ce Sharp). Este lenguaje, creado por Microsoft,
es similar a VB.NET y se centra en el desarrollo de aplicaciones como servicios
‘Web. C# es popular para el desarrollo en ASP.NET, por lo tanto es importante que
lo entienda.
La mayoria de los ejemplos de esta leecién estén en C#, asi como en VB.NET.
Muchos de los conceptos de programacién son similares en ambos lenguajes, por
To que después de la leccién anterior, sélo necesitard conocer Ia sintaxis de C#. No
obstante, después de esta leccién s6lo se concentrard en VB.NET para la creacién
de sus paginas(96 Leccion 4
En esta lecciGn veremos lo siguiente:
+ Cémo utilizar a C# en sus paginas ASP.NET.
+ Qué son los objetos y conocer algunas de sus propiedades.
+ Cémo aprovechar los objetos comunes de ASPNET.
+ Cémo trabajar con las sesiones y las cookies.
Presentacién de C#
C# es un nuevo lenguaje de programacién de Microsoft que puede utilizarse en el NET
Framework. Debido a que C# se deriva de C++ y C, los desarrolladores que ya conozcan
estos lenguajes no tendrén que aprender VB.NET para programar sus paginas ASP.NET.
C# también tiene cierta semejanza con el Lenguaje de programacién Java, por lo que incluso
los programadores de éste no deberdn tener problemas con él.
‘Muchos de los conceptos que trataremos en esta leccién son muy similares a los de VB.NET
que vimos en la leccién anterior. Tanto VB.NET como C# son poderosos lenguajes para el
Sesurrollo en ASP.NET, por lo tanto, usted podré desarrollar sus péginas con el lenguaje que
prefiera
Ejemplos de la sintaxis de C#
Esta secci6n es un curso relémpago de la sintaxis bésica de C#. Muchos de los conceptos
subyacentes son similares a los de VB.NET, por lo que slo necesitard conocer las diferencias
entre ambos.
Variables e instrucciones
Generalmente, los tipos de variables son los mismos en C# que en VB.NET. No obstante, st.
eclaraciOn es un poco distinta, Para declarar un entero en VB.NET, debe hacerlo de la manera
siguiente:
Dim Witnt As Integer
En C# lo hard ast:
int Witet;
‘Aqui hay tres diferencias, La primera es que en C#, el tipo de dato va antes del nombre de la
variable. int significa integer. La segunda diferencia es la ausencia de las palabras clave
Dim y As. Por tiltimo, todas las instrucciones de C# deberdn terminar con punto y coma.
Ahora veamos algunos ejemplos mas de declaraciones:
public int Hora; //crea una variable entera llamada Hora
bool blnIR = true; //crea una variable booleana llamada blnir
/Joon el valor trueaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.{100
Leccion 4
Una recapitulacién de los objetos
Como ya se indicé en la leccién anterior, los objetos son secciones reutilizables de cédigo y
las clases son las definiciones de dichas objetos. En la leccién previa incursion6 en esta area
al crear un sencillo objeto Reloj
El .NET Framework consta de muchas clases que definen objetos, y ASPNET puede utilizarlos
todos. Desde luego, hay algunos objetos que aunca deber‘an utilizarse en una pégina ASPNET
real, debido a que no se aplican a ASP.NET, pero aun asf podré utilizarios. Recordemos al-
yunos conceptos de la leccidn pasada.
Propiedades
Estas son variables que describen un objeto. £1 listado 4.1 muestra el ejemplo de! reloj de la
leccién anterior, pero esta vez en C#.
Listapo 4.1 _Laclase Reloj en C#
shtml>
El método Write necesita una cadena como parimetro, por lo que deberd ponerla
a entre comillas. En el recuadro de precaucién, al final de esta pagina, encontraré mas
detalles, Examinemos la linea 8 con mayor detenimiento:
4 Response. Write("
")
ie
i
Especificamente, vea la barra diagonal inverss aparentemente fuera de lugar al fi-
nal de la \inea. Sin este cardcter, la linea contendria la cadena %>, que indicaria a
ASPNET que habria Hegado al final del bloque script. Esto detendria la ejecucién a mitad
de la cadena, lo que provocaria un error, Esta es una secuencia especial de caracteres que de-
berd distinguir de alguna manera para que ASP.NET no se confunda. Es por ello que se utiliza
el cardcter de escape (\)
La barra diagonal inversa no aparece en el resultado HTML. Si quiere mostrar comillas dobles,
tiene que usar otro par de comill
Response.Write)"
")
Este listado deberd producir el resultado de la figura 4.2.
VB.NET realiza cierta conversion de tipos de datos automaticamente. La
conversién de un integer a string podria servir como ejemplo. Es por
ello que puede utilizar Response.Wriite(6) en una pagina ASPNET con
VB.NET.
No obstante, C# no realiza la misma conversién automaticamente. Por io
tanto, usar Response. Virite(6) produciria un error en una pagina ASP.NET
con C#. En vez de ello, utitice lo siguiente:
Response.Write (int. Tostring(6))
{Siempre recuerde convertir el tipo de su variable adecuadamente!aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.108 Leccién 4
Figura 4.4
Cémo controlar el bifer
Response,
Asses race
‘ang de par, ts aka
El objeto Request
En contraste con el objeto Response, el objeto Request permite la interaccién del explorador
Web con el servidor. El explorador envia mucha informacién al servidor cuando solicita una
‘pégina. Cuando esto ocurre, se genera un objeto Ht tpRequest para tratar con toda la informa-
cién enviada, Este objeto se llama Request. De este modo, el objeto Request representa la
peticin de un cliente, y el servidor Web envia una respuesta utilizando los objetos Request
y Response.
No es necesario que conozca a fondo la funcionalidad de este objeto, pues ASP.NET maneja
la mayor parte de ésta. No obstante, hay algunas cosas que debe saber.
Cémo averiguar la informacién del cliente
Una de las principales funciones del objeto Request es obtener informacién per-
sonal a través del explorador Web, por ejemplo, lo que haya capturado un usuario
en los formularios 0 los valores de cadena de consulta. Esta tiltima se refiere a cualquier
informacién enlazada al final del URL de la peticién, por ejemplo:
https //mww.Wicrosoft. com?id-Tania&sexo-femenino
La cadena de consulta, ?id=Tania&sexo=fenenino, presenta los datos en forma de pares de
clave y valor. id es la primera clave y Tania es el primer valor, sexo es la segunda clave y
‘femenino es el segundo valor, etoétera. Fl primer par de clave y valor siempre estard precedido
por un signo de interrogaci6n, y los siguientes estarén separados por un ampersand, tal como
se muestra.Uso de objetos ASP.NET con C# y VB.NET 109)
La cadena de consulta es util para pasar informacién de una pdgina a otra. Por ejemplo:
Response .Redirect(*mipagina. aspx7I0=Tania")
Mipagina. aspx ahora puede utilizar la informacién de esta cadena de consulta cuando la
necesite.
Prec Tenga cuidado de no almacenar demasiada informacién en la cadena de
AUCHON | consulte, ya que los exploradores Web antiguos s6lo pueden reconocer
hasta 255 coracteres en esta cadena, y usted nunca sabré cuando uno de sus
visitantes utilice un explorador Web viejo. A su vez, colocar grandes cantida-
des de texto aqui podria traer algunos errores en antiguas versiones de Ils.
ASPNNET ofrece una capa de abstraccién con el propésito de que usted no tenga que utilizar al
objeto Request para recopilar informacién de los formularios (como lo vera en la leccién 5,
“Introduccién a los formularios Web”), pero el objeto estaré alli para que lo use. Con el URL
anterior, puede teclear lo siguiente para obtener los valores de la cadena de consulta:
Request.Querystring J/devuelve ‘id=Tania&sexo=fenenino"
Request.Querystring("id") //devuelve ‘Tania®
Si el usuario envié un formulario, puede utilizar esto:
Request.Form //devuelve todos 10s valores del formulario
Request.Form(nombre) //devuelve un valor indicado por nombre
‘Tanto las propiedades Querystring como Form representan colecciones de informacién, Por
Jo general, ésta proviene de la informaciGn capturada por el usuario y ASP.NET la obtiene me-
diante el objeto Request. No tendré que utilizar mucho este objeto en el libro debido a que el
marco de trabajo de los formularios Web maneja autométicamente muchas de las peticiones.
Otro par de colecciones comunes utilizadas con Request son ServerVariables y Cookit
La primera devuelve informacién del servidor, como la direccién IP o el protocolo HTTP. La
segunda devuelve informacién de las cookies, que son pequefios archivos en el equipo del
cliente (vea “El objeto HttpCookie” mis adelante).
La tabla 4,3 le muestra algunas variables de entomo comunes en la colecci6n ServerVariables.
TaBia 4.3 _ Variables de entorno usadas comunmente
Variable Descripcién
URL EIURL de la pigina ASP.NET, empezando después del servidor y nombre
de dominio (es decir, luego del nttp: (/wm. Servidor com).
PATH_INFO ‘Lo mismo que Unt.
continia[10 Leccién 4
Tasia 4.3 _Continuacion
Variable Descripcién
PATH TRANSLATED ‘Toda la ruta fisica de ASPNET en el servider.
‘SERVER_NAME El nombre del servider Web.
SERVER_SOFTHARE El nombre del software del servidor Web, como Microsot
El objeto HttpCookie
Una cookie es un pequefio archivo en Ja computadora del usuario que contiene in-
formacién especffica para un sitio Web. Este archivo puede contener datos como.
nombres de usuario y contrasefias que se utilizarin para ajustar el sitio al gusto del usuario
cuando éste lo visite. Las cookies pueden contener cualquier tipo de dato sencillo como String,
Integer, Float, Boolean, eicétera. Por ejemplo, muchos sitios contienen encabezados que
permiten elegir el tipo de noticias que se desean ver. Esta informacion puede almacenarse en
las cookies de modo que la préxima vez que el usuario haga una visita, el sitio podré leerla y
hacer el ajuste necesario.
Peet
El objeto HttpCookie ofrece métodos para acceder y generar esas cookies. Puede utilizar este
objeto para analizar las propiedades de una cookie. No obstante. a forma comin de manejar
las cookies es mediante los objetos Request y Response, los cuales cuentan con una pro-
piedad Cookies que devuelve una referencia a un objeto HttpCookie.
Cémo generar cookies
El objeto Response le permite generar cookies con facilidad. Hay dos formas de hacerlo:
puede generar varias cookies, cada una con un valor en particular, o puede generar una
cookie con diversos pares de clave y valor. La siguiente seccién de cédigo demuestra ambos
métados
Establece algunas variables de cookie
Response .Cookies("MiCookie”).Value = “Una cookie’
Response. Cookies( *CookieDe211a" j(*Usuario") = “Tania”
Response. Cookies( *CookieDe211a"}(“Preferencia") = "800x600"
La segunda linea genera la cookie “MiCookie", con el valor “Una cookie*en el
equipo del cliente. Puede generar tantas cookies y parejas de clave y valor como desee
con este método, jpero acabarfa con muchas cookies! El segundo grupo de cédigo genera
una cookie Hamada ‘CookieDe211a* que tiene dos parejas de clave y valor. Para especificar
nombres de claves, tan sélo agregue otro nombre entre paréntesis (o entre corchetes en C#),
como sigue:
EY
Response. Cookies |NombreCookie] [NombreClave] ;Uso de objetos ASP.NET con C# y VB.NET
111)
Observe que, en la segunda linea del primer cédigo debe utilizar la propiedad Value para
asignar una cadena a la cookie. El s6lo usar Response .Cookies (‘WiCookie" ) devuelve un
HttpGookie, en el que no puede escribir cadenas. La propiedad Value devuelve un objeto de
tipo string que usted puede modificar. No obstante, en el segundo grupo de cédigo no nece-
sita especificar a Value porque ASP.NET sabe que usted necesita una cadena para establecer
un rombre de clave.
Si genera una cookie con un valor y le agrega claves, el valor inicial seré
Precauciin | porado. No puede generar une cookie con ambos valores y claves.
‘Suponga que llega un visitante a su sitio Web y usted le genera una cookie. Si nunca regresard,
‘no hay razén para que la cookie permanezca en su equipo. El usuario puede borrarla manual-
mente, pero hay otra forma mds sencilla. Usted puede utilizar la propiedad Expires para que
la cookie quede inhabilitada cuando usted 10 especiique. Por ejemplo:
Response. Cookies ("CookieDe2t 1a") .Expires = _
DateTime. FromString('1/1/2002")
oO
Response . Cookies (“CookieDe2i1a").Expires =
DateTime .Now. Addionths (1)
EI primer ejemplo indica que la cookie expira el 1 de enero del 2002. El segundo indica que
debe expirar un mes después de que el c6digo se ejecute. El valor predeterminado de Expires
hhace que la informacién quede sin validez después de 1,000 minutos. Esto es adecuado si tan
slo quiere mantener la informacién para esta sesién. (Vea “El objeto Session” mas adelante.)
No obstante, las cookies se utilizan usualmente para almacenar informacién por periodos
prolongados: semanas, meses o, incluso, affos.
Para suprimir una cookie del cliente, necesita establecer el valor Expires de la cookie @
alguna fecha pasada 0 a 0. La cookie serd suprimida en cuanto el usuario cierre su explora
dor Web.
Hay otras cuatro propiedades del objeto Ht tpCookie que debe conocer. Domain restringe
el uso de 1a cookie al dominio que usted indique, como win, miservidor .com. Esto offece
tun buen control de acceso para la cookie, pero tipicamente deberd dejarlo con el valor pre-
determinado, Path es similar a Domain, pero s6lo permite el acceso a la cookie a las paginas
ASP.NET que se encuentren en una ruta especifica del servidor. Haskeys le indica si esta
cookie tiene claves 0 es una cookie de un solo valor. Por dltimo, Secure indica a ASPNET
si debe o no transmitir la cookie de forma segura: es decir, s6lo bajo el protocolo HTTPS.
El valor predeterminado es false.[112 Leccion 4
Como acceder a las cookies
El expiorador Web envia toda la informacién de las cookies al servidor en cada peticién que le
hace, Por Jo tanto, es posible utilizar el objeto Request para recopilar dicha informacién.
El acceso a una cookie sigue exactamente la misma sintaxis que al generarla. En el siguiente
listado usaré a Response.Write para escribir los valores de la cookie en el explorador Web:
‘ establece algunas variables de cookie
Response.Write) _
Request .Cookies( *MiCockie") .Value)
Response.Write)
Roquest .Cookies( *CookieDe211a") (*NonbreUsuario” )}
Response.Wirite| _
Request .Cookies( "CookieDe2t 1a") (*Preferencia’});
Nuevamente, vea la diferencia entre acceder un valor y las parejas de clave y valor: especifi-
‘camente, el uso de la propiedad Value. Debido a que las parejas de clave y valor son simples
colecciones de datos, puede iterar por ellas con facilidad, como se aprecia ene! listado 4.4.
Listapo 4.4 _Cémo iterar por las claves de cookie
1: <8 Page Language="VB" >
aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.[116 Leccion 4
El evento Load es may importante para los desarrolladores de ASP.NET. Puede hacer muchas
cosas con este evento, como verificar la identidad del usuario, cargar datos de una base de da-
tos y redirigir al usuario, De hecho, la mayoria de las paginas ASP.NET que vers a partir de
este momento tendrén un controlador para este evento.
Yeamos otro ejemplo. Suponga que desea mostrar al usuario distintos mensajes de acuerdo
ta la pagina. Podria hacerlo como se muestra en el listado 4.6.
con la hora en la que éste
Listapo 4.6 Como mostrar distintos mensajes con el evento Load
<8@ Page Language="VB" >
En la Iinea 23 ha generado otro contol Label. En su evento Load estableve la varia-
WAN ble Ahora en la hora en curso, y utiliza la propiedad Hour del objeto DateTime para
éevolver la hora,
| La lfnea 8 muestra Is hora en curso en el control Label. El método ToString devuelve una
cadena con la fecha y hora ya formateadas, y toma un argumento: una cadena que indica
cémo dar formato a la fecha. La tabla 4.4 lista las cadenas de formato correctas.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.[120 Lecci6n 4
Listapo 4.8 Como recuperar variables en Session