Capitulo 1: Comprender Microsoft Web Technologies

Anuncio
Capitulo 1: Comprender Microsoft Web
Technologies
En un principio, la World Wide Web (WWW) era plana. La World Wide Web es una
biblioteca electrónica en donde los académicos y científicos contabilizaban sus
disertaciones y datos polvorientos para la lectura rudimentaria, que era solo texto en los
primeros navegadores. Con la llegada de los exploradores graficos, despegó la Web
orientada al consumidor. El contenido se convirtió en algo totalmente colorido. Alguien
recuerda que hermosos momentos pasó con el inolvidable <blink> y <marquee>, esas
hermosas etiquetas que utilizábamos en HTML con nuestro sencillo Bloc de notas
(Muchos como yo queremos olvidar esas etiquetas, pues me tenían loco cada vez que
terminaba una pagina y no salía lo que quería, muchos errores). En fin, la Web ha
evolucionado como un medio rico, interactivo y personalizado.
En la nueva versión de la Web llamado Web 2.0, las páginas funcionales no logran llenar
la aceptación del público. La experiencia del usuario es muy encendida y los sitios son
frescos. En este capitulo se mirará a las herramientas y tecnologías Microsoft para crear y
entregar participación para el contenido Web.
1.1 Introducción a las herramientas de Contenido y Creación
Microsoft posee una gran gama de herramientas para la creación de páginas Web que
atraen a varios niveles de habilidad. Existen lógicamente algunas herramientas que son
más adecuadas para el diseño de página Web y otras más apropiadas para la
programación.
1.1.1 Microsoft Office
Cuando Microsoft se dió cuenta que estaba ganando terreno en el mundo de Internet, los
texto pasaron a integrar un apoyo en la Web para los productos. Por ello ahora se pueden
guardar páginas Web desde hojas de Excel, Documentos de Word y Diapositivas de
PowerPoint.
Muchas empresas utilizan la suite de Microsoft Office para colocar archivos en la intranet
porque los empleados se sienten muy cómodos trabajando con productos como Excel o
Word. Estas aplicaciones son muy amigables y recomendables para trabajar con
contenido Web estático. Aunque estos son un poco inflados (por el código que se crea)
generalmente las paginas son fieles reproducciones del documento original. En especial,
cuando se utiliza el más reciente navegador de Microsoft, nos referimos a Internet
Explorer.
No existe nada ni nadie quien pueda parar que los usuarios utilicen Archivo>Guardar
como: HTML, en un sitio con ASP.NET. Sin embargo, usted puede encontrarse que el
quitar código no deseado en HTML toma más tiempo y es mas dificultoso que iniciar una
pagina desde cero.
1.1.2 Expression Web
Expression Web tomó el lugar de nuestro añorado y buscado (por algunos) Microsoft
Office FrontPage como el editor de contenido de paginas Web para diseñadores con años
de experiencia.
Aunque muchos usuarios ven a Expression Web como un procesador de textos un
poquito avanzado y mejorado, puedo decir que Expression es mucho más que eso, ya
que posee herramientas muy importantes que ayudarán en su trabajo a los diseñadores
de páginas Web. Estas herramientas incluyen Gestión de archivos, Comprobación de
vínculos, edición de estilos y soporte para arrastrar y colocar controles HTML y ASP.NET.
Expression Web ha heredado el excelente modo de trabajo de Microsoft Office FrontPage,
la vista dividida, el cual se puede trabajar en modo gráfico y en modo código al mismo
tiempo. Otra característica hace que Microsoft extraiga el editor HTML de Visual Web
Developer que sustituyó la versión superior (Expression\FrontPage)
1.1.3 Expression Blend
Expression Blend es principalmente hecho para el conjunto de usuarios que utilizan el
modo artístico (especialmente los que utilizan MAC) para crear gráficos vectoriales,
animados y tridimensionales, como lo hacen los diseñadores que utilizan PhotoShop.
Expression Blend posee una inmensa variedad de herramientas, como conjuntos de
pinceles, paletas, rellenos, textos, degradados y muchas cosas más para los usuarios que
pueden obtener una gran ventaja con estas herramientas.
Los archivos basados en XML que genera Expression Blend, trabaja con aplicaciones
Windows Presentation Fundation (WPF) que se ejecutan en Windows y en plataformas
cruzadas en aplicaciones SilverLight para la Web.
La interfaz de usuario de Expression Blend es tenue y fúnebre, muy lejos de la hermosa
interfaz de Windows XP o Windows Vista. En teoría, la interfaz de Expression Blend es un
ambiente de diseño monótono, plano, sin distracciones para un artista con su lienzo de
dibujo.
1.1.4 Visual Web Developer
Visual Web Developer (VWD) es la principal herramienta para la programación de sitios
Web para plataformas Microsoft. Al igual que Microsoft Office Word, que pertenece a la
suite de Office, Visual Web Developer pertenece a la inmensa suite de Visual Studio
2008.
Visual Studio incluye Visual Basic.NET, Visual C# y muchas otras herramientas. Como ya
muchos sabemos, Microsoft siempre trata de acaparar el mercado y presenta varias
versiones de Visual Studio, por ejemplo, una versión especializada para desarrolladores,
diseñadores de Base de datos, para testers e ingenieros de sistemas.
Como un entorno de desarrollo integrado (IDE), Visual Web Developer le ayuda a
construir y ensamblar los elementos claves en aplicaciones Web, incluyendo paginas
Web, imágenes, controles, base de datos, hojas de estilos, y por obvias razones, la lógica
de programación.
Visual Web Developer Express (VWDE), es un poco discriminado por algunos usuarios
por experiencia, ya que es la versión gratuita para algunos principiantes y los aficionados
(como yo, jejeje).
Figura 1. 1
Visual Web Developer Express no admite complementos, control de código fuente,
extensibilidad o macros, que son características que un desarrollador profesional espera
como herramientas.
Muchas de las instrucciones que se brindarán en este libro, puede ser utilizado en Visual
Web Developer y en Visual Web Developer Express. Usted puede realizar casi cualquier
instrucción de este libro, utilizando la versión libre.
1.2 Reuniendo las tecnologías detrás de las aplicaciones Web
Las tecnologías que apoyan las aplicaciones W eb provienen de diferentes organizaciones
y de diferentes equipos dentro de Microsoft. Ahora encontraras un panorama general, de
las partes que se conectan entre si.
1.2.1Microsoft.Net FrameWork 3.5
Microsoft .NET Framework versión 3.5. .NET Framework es un componente integral de
Windows que admite la creación y la ejecución de la siguiente generación de aplicaciones
y servicios Web. Los componentes clave de .NET Framework son Common Language
Runtime (CLR) y la biblioteca de clases .NET Framework, que incluye ADO.NET,
ASP.NET, formularios Windows Forms y Windows Presentation Foundation (WPF). .NET
Framework proporciona un entorno de ejecución administrado, un desarrollo e
implementación simplificada y la integración con una gran variedad de lenguajes de
programación.
Los Geeks hacen referencia a las clases o bibliotecas de clases que componen .NET
Framwork. Ellos utilizan nombres como System.Web, System.Data y System.xml.LinQ.
Estas referencias les servirán como material que le muestra que es una manera simple de
organizar y clasificar miles de fragmentos de código pre escritos que los desarrolladores
pueden aprovechar a través de lenguajes de programación como C#, C++ y Visual Basic.
1.2.2 ASP.NET 3.5
ASP.NET 3.5 es una tecnología que ofrece aplicaciones Web interactivas controlada por
datos a través de Internet o una Intranet.
ASP.NET 3.5 incluye un gran número de controles pre compilados, tales como cuadros de
texto, botones, imágenes, cuadriculas, el cual puede ensamblar, manipular y configurar el
código para crear paginas HTML que aparecen correctamente en todos los navegadores
populares, especialmente Internet Explorer.
Cuando se combina la programación lógica, ASP.NET le permite enviar código HTML que
en circunstancias es específico para cada usuario.
1.2.3 ASP.NET podría haber sido XSP.NET
En lugar de ASP.NET la tecnología se convirtió casi en XSP.NET. En una entrevista con
el Microsoft Architec Journal. Scott Guthrie quienes ayudaron a establecer Microsoft core
Web Technologies, recuerda esta cuestión de nomenclaturas.
Originalmente lo llamaron XSP, y la gente siempre pide lo que la X representaba. XML
inicia con XSLT lo que originalmente trató de ponerse la X.
Anteriormente los desarrolladores de ASP.NET y muchos de nosotros aprendimos a
construir sitios con Active Server Pages, primera plataforma de encriptación Web de
Microsoft. ASP (actualmente llamado ASP classic) Obtuvo este nombre en Microsoft
“Active” como en la fase de AcitveX, Active Desktop y Active DIrectory.
A diferencia de las páginas estáticas HTML, que se almacenan en el disco de modo
completo, las paginas ASP.NET generalmente existen en un estado similar al esqueleto
en el disco. Esto es solo cuando un usuario solicita una pagina ASP.NET que analiza las
marcas, rellena todo el contenido (generalmente una base de datos) y envía HTML que el
navegador pueda procesar.
1.2.4 ASP.NET Extensions
El equipo de ASP.NET continua agregando controles entre los lanzamientos oficiales.
Estos son paquetes como extensiones que usted puede descargar e instalar. Las
extensiones ASP.NET 3.5 incluyen controles Silverlight y MediaPlayer para la
presentación de medios enriquecidos en paginas ASP.NET.
Otras extensiones y plantillas incluidas los controles Dynamic Data para mostrar
contenido de Base de datos y una avanzada arquitectura FrameWork llamada Model View
Controller (MVC)
Microsoft tiene muchos términos para un programa no terminado, tales como alpha, beta,
vista previa, vista previa de comunidades técnicas (CTP). Criticas para su uso en
producción, debe verificar que una extensión ASP.NET este hecho para ser lanzado a la
Web (RTW) o lanzado como etapa de manufactura (RTM).
1.2.5 Web Services
Los servicios Web permiten enviar datos y cálculos a equipos remotos sin restringir su
base de clientes a los que Windows está ejecutando. El formato de intercambio más
popular es el Protocolo simple de acceso a objetos (SOAP) que permite a diferentes
plataformas comunicarse entre si mediante el uso de XML.
Microsoft ha puesto un gran impulso en Web Services vía ASP.NET en anteriores
lanzamientos de .NET. El énfasis de la atención ha sido sobre servicios que utilizan
Windows Comunication Foundation (WCF)
Los servicios WCF están mas robustos y fáciles de proteger, especialmente para
aplicaciones empresariales donde se puedan compartir datos de asistencia sanitaria con
una empresa que se encarga de facturar.
Los Sitios Web pequeños también poseen algunas utilizaciones interesantes para los
servicios, especialmente cuando se enganchan con tecnologías como ASP.NET AJAX.
1.2.6 JavaScript y el código lado del cliente
Modernos navegadores entienden un lenguaje de programación interno llamado
JavaScript. Cuando el navegador encuentra código JavaScript (script en geekspeak)
interno en una pagina HTML, se ejecuta las instrucciones del programa.
EL navegador (el cliente) no necesita una conexión para el servidor para ejecutar código
JavaScript, esto es completamente independiente. Los script lado del cliente utiliza la
potencia del procesamiento del equipo en el cual el navegador es ejecutado. Esto es
tremendamente ventajoso porque tarda la presión en el servidor Web y distribuye tareas
individuales.
Las secuencias de comandos en el lado del cliente se hacen complicadas y
extremadamente potentes cuando combina con la lógica en el servidor. Imagínese este
escenario:
El servidor Web envía una secuencia HTML que contiene instrucciones JavaScript. Estas
instrucciones incluyen código JavaScript que verifica si el usuario anónimo tiene escrito
números desde 1 hasta 10 en un cuadro de texto. El navegador ve los scripts y ejecuta
localmente. Hasta que el usuario tenga escrito un número desde 1 hasta 10, el servidor
Web no se encuentra involucrado. Cuando el navegador envía los números de regreso al
servidor Web, la acción de regreso es conocida como PostBack.
1.2.7 ASP.NET AJAX
Asíncrono de Java Script y XML (AJAX). Es una tecnología que reduce el despilfarro
innecesario de completas páginas que se actualizan por limite de transferencia de datos
para y desde el servidor Web.
En una pagina habilitada con AJAX, puede escribir su número de tarjeta de crédito en un
cuadro de texto, clic en el boton Enviar, y tiene una respuesta tal como “Tarjeta de crédito
Aceptada” sin Alterar la imágenes, menús, y textos en otros lugares en la página. El
navegador envía los datos requeridos a el servidor. Cuando los mensajes vienen de
regreso, AJAX utiliza código JavaScript y HTML Dinámico para escribir dentro de la parte
designada de la pagina. El gusto de Microsoft sobre AJAX es que es una parte integral de
ASP.NET 3.5 en lugar de un add-on de versiones anteriores. Como resultado, si un error
o defecto de seguridad existen, Microsoft puede corregir los códigos AJAX via
Actualizaciones automáticas o durante el mes de celebración conocido como “Martes de
Parches” (Algo que Microsoft siempre hace)
1.2.8 HTML Dinámico
Si bien no es una tecnología exclusiva de Microsoft, HTML Dinámico (DHTML) juega un
rol importante en hacer páginas Web de respuesta, interactiva y más como un programa
regular de Windows.
Cuando el navegador analiza el código HTML para una pagina, este crea un documento
en memoria. Estos documentos tienen una estructura jerárquica cuando elementos
secundarios anidan dentro de sus contenedores padres. Por ejemplo, las filas de una
tabla son anidadas dentro de una tabla que son anidadas con el cuerpo del documento.
La palabra dynamic (dinamico) en DHTML se refiere a la habilidad de cambiar las
características de un elemento utilizando JavaScript. Usted ha visto estas habilidades
muchas veces sin necesidad de prestar atención. Por ejemplo, usted ve el trabajo de
DHTML cuando pasa el mouse sobre una imagen y la imagen cambia. Asi mismo, DHTML
está trabajando cuando hace clic en un signo más para expandir un párrafo de texto. Es
probable que JavaScript esté instruyendo el texto (o contenedores) para ser visible
aunque el código original se envía desde el servidor como un conjunto de textos en modo
oculto.
La habilidad de JavaScript y ASP.NET AJAX para manipular y re escribir casi cualquier
parte de una pagina web (incluido el texto) es que hace posible la mayoría de efectos
dinámicos.
1.2.9 Extensible Markup Lenguage (XML)
Aunque Microsoft había dado una m ano en las especificaciones para Extensible Markup
Lenguage (XML), los estándares vienen desde la World Wide Web Consortium (W3C).
Microsoft utiliza XML ampliamente en tecnologías Web como un camino de pasar datos a
todos. Estos datos incluyen intercambios browser-to-server, server-to-browser, server-toserver y desde un programa a otro.
1.2.10 Silverlight
Silverlight de Microsoft es cross-browser, plug-in cross-plataform multimedia. Trabaja en
Windows, Mac e incluso plataforma rival de Linux.
Estoy casi seguro que has visto películas de Macromedia (Ahora Adobe) Flash en una
página Web. Silverlight es como Flash, solo que más rápido, tecnológicamente mas
avanzado, y más fácil de programar, especialmente en lenguajes .NET. Este es llamado
“El asesino de Flash”, utiliza un form de marcación de XML llamado XAML para generar
gráficos y comportamientos.
Puede utilizar Silverlight para incrustar de todo desde un screencam a videos de dibujos
animados de full movimiento, utilizado para transmitir y difundir en vivo. El tamaño de
descarga es razonable, y Silverlight corre aislado en su propia zona, conocido como
sandbox, así mismo el programa debería ser lo suficientemente seguro para la mayoría de
usuarios.
Silverlight es muy atractivo como una plataforma multimedia. Este se compromete a ser
un gran negocio como las herramientas y tecnologías mas avanzadas.
1.2.11 Lenguaje integrado de consultas (LINQ)
Lenguage Integrated Query (LINQ) es un conjunto de agregados para lenguajes de
programación C# y VB.NET que tratan fácilmente con datos. LINQ llega en varios
dialectos, incluido LINQ para SQL, LINQ para XML y LINQ para objetos. Después de las
declaraciones y sintaxis LINQ maestras, puede aplicar los conocimientos para todas las
ordenes de datos. En efecto, LINQ permite combinar datos desde multiples orígenes tales
como base de datos, Web service y archivos XML.
Para la mayoría de personas, los grandes beneficios es el soporte de LINQ para SQL
Server. En lugar de escribir complicadas declaraciones SQL, y cruzando los dedos para
que no ocurra un error de sintaxis. LINQ le permite utilizar palabras claves familiares en
las consultas. Visual Web Developer (como con otros miembros de la familia de Visual
Studio 2008) mira lo que escribe y le alerta de los problemas.
1.2.12 ADO.Net
ADO.NET de Microsoft es una tecnología para trabajar con datos y base de datos de todo
tipo. Cuando una aplicación Web toma a una base de datos tales como Microsoft SQL
Server, es probable que utilice ADO.NET. La introducción de LINQ ha ocultado mucho de
ADO.NET desde las vistas en Visual Web Developer.
1.2.13 SQL Server
SQL Server 2005 y 2008 son productos claves en estrategias de tecnologías Microsoft
Web. La frase “Es todo acerca de los datos” se aplica a la mayoría de aplicaciones Web
más graves. Si hace un seguimiento a las preferencias del usuario, generando reportes
complejos, o almacenar pedidos del cliente, necesita un rápido y fiable motor de datos y
base de datos relacionales.
Microsoft proporciona SQL Server Express gratis (pero, como ellos dicen “pueden aplicar
coneccion de cargos”), siendo una genial elección para principiantes. Las aptitudes y
adquisiciones de datos utilizando SQL Express son directamente transferibles para las
versiones más recientes de SQL Server desde un estándar empresarial.
1.2.14 Internet Information Services
Internet Information Services (IIS) de Microsoft es el principal producto de servidores Web
que viene gratis con la versión más reciente de Windows.
Como una plataforma, IIS entrega paginas Web y servicioes Web a lo solicitado por un
navegador u otra aplicación. ASP.NET 3.5 trabaja en conjunto sin problemas con IIS para
producir paginas dinámicas.
Puede ejecutar IIS en su estación de trabajo de desarrollo, a lo largo de la intranet de su
compañía, o exponerlo al gran publico de internet. Sin embargo, a menos que ejecute un
gran negocio en la Internet, probablemente utilice IIS a través de una compañía de
hosting independiente. Estos hosters son especialistas que rentan espacios en sus
servidores, vender ancho de banda, mantener las conexiones de internes y programas
backups.
Durante el desaroolo de escenarios en Visual Web Developer, puede no usar IIS todavía.
VWD incluye un ligero servidor Web que hace casi todo lo que usted necesita en su
maquina local de desarrollo. Cuando este satisfecho con las paginas y código, transfiera
el sitio a un equipo IIS desde dentro de Visual Web Developer.
Introducción a ASP.NET 3.5
2.1 Formularios HTML por ningún lado
En muchos aspectos las etiquetas HTML disponibles para crear entrada de datos son un
ejercicio confuso y frustrante de inutilidad. Los usuarios pueden insertar información para
toda respuesta de un cuestionario de un pedido de productos. Utilizando un práctico botón
de envío, también disponible en formato HTML, usted puede enviar la información a
absolutamente nada.
2.2 Entrada de datos HTML sin Salida.
1° Abrir su editor de textos favorito, en mi caso un Bloc de notas es suficiente. Para ello
puede hacer clic en el botón Iniciar, Todos los programas, Accesorios y clic en Bloc de
notas.
Figura 2. 1
2° Escribe el siguiente código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.handsofthelp.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.handsofthelp.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>HTML sin salida</title>
</head>
<body>
<form>
Por favor, ingrese un nombre:<br/>
<input type="text" name="username"/>
<p/>
Pulse el botón para recibir esperanzas y sueños:<br/>
<input type="submit" value="Botón de sueños" />
</form>
</body>
</html>
3° Guárdelo con el nombre Sin salida.html.
4° Ingrese a su pagina Web creada.
Figura 2. 2
5° En el cuadro Por favor, ingrese un nombre, escribe tu nombre.
6° Clic en Botón de sueños.
2.3 Su navegador es un cliente ligero
El trabajo principal del navegador es dar un solicitud al servidor y mostrar lo que el
servidor manda como respuesta. Utilizando HTTP como un protocolo de transferencia, su
navegador analiza (interpreta) el código HTML que recibe desde el servidor, pero de otro
modo hace un menor procesamiento.
Debido a que su cliente HTTP (navegador) deja la mayor parte del trabajo de
procesamiento al servidor, se le considera un cliente ligero. No existe nada de malo con
un cliente ligero, e incluso puede tener procesos JavaScript.
Con Plug-ins, lo que virtualmente todos los navegadores se han construido, un cliente
ligero puede también procesar ciertos tipos de archivos, tales como SWF (Compilado de
archivos de Adobe Flash), Java applets, controles ActiveX, así como otros archivos que
requieren que su navegador sea compatible con pulg-ins.
En su mayor parte, sin embargo, un cliente ligero es un modelo en el que el servidor, no
su procesamiento y el trabajo de su navegador es el mostrar el contenido que se obtiene
del servidor.
Figura 2. 3
2.4 Un protocolo sin un país: estados HTTP
Además de ser un cliente ligero, su explorado HTTP cliente es “sin estado”. Tan pronto
como una pagina web llega a su ordenador, la conexión entre el navegador y el servidor,
se rompe. El navegador no recuerda la ultima pagina, esto es no tener “estado”. Tan
pronto como llegue a la siguiente página, no recuerda la última pagina.
Seguramente está pensando que la memoria Caché tiene una gran variedad de paginas
anteriores y que su navegador recuerda el historial de características de cada una de las
paginas anteriores. Esto no significa que se “retenga el estado”.
Usted no puede utilizar los datos y la información en la memoria caché del navegador o el
historial como estados para utilizarlos como pagina actual en memoria.
Lo que está en memoria activa es la pagina web que el servidor ha enviado, el estado de
la pagina anterior no está allí.
Tan pronto como cargue una pagina, la pagina anterior es expulsada y la nueva aparece
allí. Tanto la información que usted coloca en un cuadro de entrada de texto, es enviado
al silicio del olvido al hacer clic en el botón Enviar, el conocimiento de la pagina anterior
(su estado) se ha ido cuando llega la nueva pagina.
Un buen sitio Web organizado puede aparecer para mantener el estado de los vínculos en
páginas conectadas para un conjunto de paginas relacionadas, pero esto es una ilusión
que el diseñador Web ha elaborado para una buena planificación.
2.5 Pregunte a los expertos
Parece que el término Estado se utiliza en diferentes formas en la programación. He
oído de todo “Maquinas de estado” a “Patrones de diseño de estado”. ¿Qué es una
sencilla explicación de “estado”?
Un estado de objeto se refiere a una condición del objeto. Por ejemplo, un Booleano
puede tener dos estados True o False. Cuando ingresas información dentro de un
formulario, la información que ingresas refleja el estado actual del formulario. Para
guardar este estado, usted tiene que colocarlo en algún lado para que mantenga su
estado hasta que lo necesite otra vez. Uno de los lugares donde usted puede poner los
datos del estado se encuentra en una variable, y lo puede tener para usted
temporalmente.
Para el almacenamiento permanente de un estado, puedes utilizar una base de datos o
cualquier otro archivo que pueda almacenarse en un disco duro.
Los Cookies mantiene el estado en un sentido. Estos son pequeños archivos de texto
almacenados en el equipo cliente, y pueden ser leídos y utilizados. Sin embargo, estas
Cookies solo guarda el ID de sesión, pero generalmente los datos de la sesión actual se
almacenan en el servidor.
Así mientras que las Cookies pueden ser utilizadas en formas muy creativas para emular
un estado, ellos contienen pequeña información y están a merced de los usuarios quienes
pueden quitarlos cuando lo deseen.
La siguiente imagen muestra un modelo general que utilizan los desarrolladores al crear
una aplicación Web estándar.
Figura 2. 4
Los que poseen más experiencia con HTML pueden ser consientes de estas limitaciones
en un entorno de trabajo en el que usted puede hacer poco más que presentar elementos
estáticos en un entorno sin estado.
El entorno de ASP.NET le permite moverse de un entorno HTTP sin estado a un estado
de conservación único.
2.6 ASP.NET como una alternativa al CGI
Microsoft como alternativa al Common Gateway Interface (CGI) es ASP.NET, ahora en
versión 3.5. Como una plataforma Web unificada, ASP.NET proporciona lo que se
necesita para desarrollar aplicaciones que albergan estado y el uso de la información que
colocas dentro de un formulario HTML.
En lugar de enviar la información del formulario al vacio cuando hace clic en el botón
Enviar, los datos pueden ser almacenados temporalmente o permanentemente.
Usualmente cuando pensamos en guardar un estado, podemos imaginar la escritura de
los datos en un dispositivo de almacenamiento como un disco duro.
Utilizando un procesador de textos, cada vez que guarde el archivo, guarda el estado.
Utilizando ASP.NET puede hacer lo mismo con la información de cualquier persona que
utiliza su aplicación Web.
Esto le permite construir aplicaciones donde la información introducida puede
almacenarse para su uso, ya sea con la próxima petición HTTP o con un conjunto de
datos introducidos por los usuarios en todo el mundo, esto es una gran hazaña
comparada con guardar el estado en su archivo de procesador de texto.
ASP.NET es el estado que facilita la gestión que proporciona las herramientas que usted
necesita para controlar el estado.
Usted no necesariamente quiere guardar todo el estado de la pagina Web, pero sin duda
desea guardar el estado de los datos ingresados por los usuarios y quizás el URL de la
pagina. Utilizar la gestión de estado le permite hacer esto.
El servidor Web de Microsoft, Internet Information Services (IIS) utiliza la API del servidor
de Internet (ISAPI) para hacer llamadas a funciones en lugar de utilizar los Scripts CGI.
Mediante el uso de ISAPI, los desarrolladores pueden crear aplicaciones basadas en Web
que se ejecutan más rápidamente y tienen una mayor extensibilidad de CGI, entre otras
ventajas. En el nivel más bajo, interfaces de ASP.NET con IIS a través de una extensión
ISAPI.
Sin embargo, este libro se centra en el alto nivel de interacción con ISAPI en formularios
ASP.NET y el código escrito en C# (pronunciado “C Sharp”) que utiliza ASP.NET.
ASI que en lugar de tener que hacer frente a comunicaciones minuciosas de bajo nivel,
ASP.NET le permite escribir sus scripts en C#.
Otra manera de ver a ASP.NET es como una solicitud que tenga un motor de
procesamiento de peticiones y las envía a un punto en el que puede adjuntar C# Script
para procesar la solicitud.
Así mientras que no vamos a pasar tiempo en la vivienda de las operaciones de bajo
nivel, usted puede estar seguro de que esas operaciones son manejadas de manera
eficiente.
El uso de “código administrado” nombre de código de Microsoft que se ejecuta bajo la
dirección de .NET Framework, una aplicación es ejecutado en una maquina virtual en
lugar de su propio procesador.
Ambos, C# y Visual Basic .NET (VB.NET) son lenguajes para la creación de código
administrado que se ejecutan eficientemente en entornos .NET.
2.7 Desde el lado del cliente a el lado del servidor
Como has visto en la imagen anterior, todo lo que el explorador Web hace es realizar
peticiones al servidor y recibir páginas Web en forma de código HTML. El navegador toma
el HTML y construye una página para verla en su navegador Web. En su mayor parte,
esto se continuará produciendo cuando adopten ASP.NET.
Figura 2. 5
La principal diferencia es que escribiendo y ejecutando código del lado del servidor, usted
puede generar HTML que efectivamente maneja estados dinámicos de modo que usted
puede utilizar y reutilizar un determinado estado.
La siguiente imagen muestra un flujo general cuando un archivo ASPX en un servidor
Microsoft recibe una llamada del cliente.
En busca de un ejemplo, no necesita mirar más allá del ejemplo original de la pagina
HTML con el formulario. Con un programa de lado del servidor para la captura de los
datos que se envían al servidor, muchos de los procesos en el servidor son posibles.
Supongamos que el usuario ingresa el nombre Leiner Cardenas. El archivo del lado del
servidor puede usar la propiedad name, username para extraer un valor. En este caso
seria extraer el nombre de Leiner Cardenas y hacer algo con ella.
Puede ejecutar un script SQL para almacenar el nombre en una base de datos,
compararlos con una contraseña, o puede transmitir información sobre Leiner Cardenas
hacia el navegador en HTML.
Para tener una idea de las diferencias y semejanzas entre HTML y ASP.NET, podemos
tomar el formulario HTML y añadir una respuesta calculada del servidor. En el siguiente
ejemplo verás dos Scripts.
Una de ellas es un script en ASP.NET y el otro es en código C# utilizando un código
subyacente “code behind” que sirve como un motor de evento para la solicitud. El
formulario incluye una etiqueta de nombre y código.
runat="server"
Esta pequeña línea de código significa que todo va a ser atendido por el servidor.
Así, a diferencia del archivo HTML que hace todo el trabajo en el cliente (navegador), el
tratamiento se realiza en el servidor y devuelto al cliente como HTML.
Sin embargo, el servidor puede hacer mucho más, incluido el envió y recuperación de
datos de una base de datos.
Mientras que obtener código HTML del servidor no es nada nuevo, los nuevo es que el
código HTML regrese a su origen en el navegador y es generado por los archivos de
ejecución en el servidor que usted escribió líneas arriba.
El ejemplo que veremos se guarda en un archivo ASP.NET llamado Dreamer.aspx. En el
archivo Dreamer.aspx, el contenedor <form> incluye una ventana de ingreso de texto al
igual que el archivo HTML sin salida, con solo unas ligeras diferencias.
<asp:TextBox…
En lugar de…
<input type ="text"…
Asimismo el contenedor <form> tiene un boton utilizando el script.
<asp:Button…
En lugar de…
<input type ="submit"…
Se encontró en HTML. Por el momento no se preocupe por las cabeceras y los estados
del Using System. Aquí, mira los elementos del formulario ASP.NET, el cuadro de texto,
botones, etiquetas y teniendo en cuenta que son análogas a las del texto y el botón Enviar
de las etiquetas HTML. Sin embargo no hay etiqueta.
Una vez que empiece a ver que mucho de lo que sucede en ASP.NET utiliza elementos
de formulario, usted será capaz de ver que usted ya sabe acerca de una buena parte de
sus experiencias ASP.NET con HTML.
2.8Dreamer.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Dreamer.aspx.cs"
Inherits="_Dreamer" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Server Side Dreamer</title>
</head>
<body>
<form id="form1" runat="server">
<div> Please enter your name:<br />
<asp:TextBox ID="DreamBox"
runat="server"> </asp:TextBox>
<p />
Press the button to receive all of your hopes and dreams:<br />
<asp:Button ID="Dreamer"
runat="server"
Text="Dream Button"
OnClick="DoDream" />
<p />
<asp:Label ID="Dreams" runat="server"
Text="Dreams Here"></asp:Label>
</div>
</form>
</body>
</html>
Junto con el código ASP.NET, el código C# se genera en un archivo conocido como CS
“código subyacente”. Como verá el código C# se utiliza principalmente para desencadenar
los eventos que inician una secuencia de comandos en un script ASP.NET.
EL siguiente código C# en gran medida ha sido generada por Visual Studio 2008, y la
única línea qjue el desarrollador tiene que añadir es una declaración de entrada desde
asp:TextBox y ponerlo en asp:Label.
El código también elimina por defecto el evento inicial Page_Load de cualquier acción que
se inicie tan pronto como se carga la página.
Este script espera a que el usuario de clic en el botón para iniciar la acción de agregar
contenido para el formulario asp:Label.
Dreamer.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
public partial class _Dreamer : System.Web.UI.Page
{
protected void DoDream(object sender, EventArgs e)
{
Dreams.Text = DreamBox.Text + "'s dreams are big ones!";
}
}
Figura 2. 6
SI ese código es desalentador, es solo porque se utiliza el estado using system. Sin
embargo, si tiene en cuenta que todo ha sido generado automáticamente por Visual
Studio 2008, usted está realmente mirando unas pocas líneas de código.
La figura líneas arriba muestra lo que puede esperar para ver el nombre una vez
ingresado el dato y pulsar clic en el botón Dream.
Hasta este punto, no espero comprender como trabaja ASP.NET o C#. A medida que se
profundiza, comprenderá más, pero el objetivo primordial es mostrar la forma de hacer las
tareas utilizando ASP.NET. Al igual que cuando conduce su auto, puede saber un poco
acerca de cómo es la combustión interna del motor o el sistema hidráulico. Sin embargo,
usted solo desea llegar a su destino. En el caso de ASP.NET, lo que significa la creación
de aplicaciones útiles.
2.9 Organización .NET
Probablemente la mejor manera de pensar en .NET es como una gran sistema de control
con dos elementos claves.
La primera es la Biblioteca de clase de .NET Framework. Esta biblioteca cuenta con miles
de clases organizadas dentro de los “namespaces”. Este gran conjunto de clases fue
diseñado para proporcionar toda la clase de apoyo prácticamente para cualquier
aplicación que un desarrollado desee crear. Esta biblioteca es un repositorio de tipos
reutilizables para el desarrollo orientado a objetos. Por ejemplo, System.Web.UI
Namespace le permite crear varios controles de servidor ASP.NET y las interfaces de
usuario.
Un namespace puede entenderse como un concepto para la organización de las clases.
Cada namespaces contiene colecciones de clases, gran parte de las cuales no son
necesarias para cualquier aplicación.
Lo siguiente representa un poco de las clases en namespace.




Control
Data Binder
PageParser
UserControl
Para utilizar las clases, así como otras estructuras, como interfaces, deberá incluir el
namespace en su programa.
En segundo lugar, el centro de .NET, es common laguage runtime (Lenguaje común en
tiempo de ejecución). El tiempo de ejecución es un agente de administración para el
código, como se ejecuta. Todos los servicios, tales como la memoria, la gestión de
subprocesos y remotos, son manejados por .NET Framework.
Por ejemplo, VB.NET (Visual Basic) tiene acceso a la misma familia de las clases al igual
que C#. Esto es diseñado para ayudar al tipo estricto de seguridad y otras estructuras que
garanticen tanto la solidez y la seguridad.
Microsoft se refiere al código que se centra en el lenguaje común en tiempo de ejecución
como código administrado y se refiere al código que no se dirige al tiempo de ejecución
como código no administrado “unmanaged code”.
La siguiente imagen ilustra el código administrado que se ejecuta en diferentes entornos.
Figura 2. 7
ASP.NET es uno de los principales marcos proporcionados por .NET Framework. De la
misma manera que ASP.NET se integre en un programa VB.NET, puede desarrollarse
con J#, JScript o C#. Todos son procesados mediante el uso de .NET Framework.
Así que una vez que aprenda a desarrollar aplicaciones en un solo lenguaje, como C#,
buscará desarrollar en otros lenguajes muy simples o similares.
2.10 Contextos de desarrollo
Si usted nunca ha desarrollado las aplicaciones del lado del servidor, el proceso puede
parecer desalentador, pero en realidad no lo es. Puedes desarrollar en un simple entorno
HTML, agregando ambas secuencias de comandos C# y formularios ASP.NET.
En el ejemplo Dreamer.aspx, podríamos haber desarrollado secuencias de comando en
C# en el mismo contexto como un código HTML y formularios ASP.NET.
Por ejemplo, el siguiente código en la pagina HTML haría lo mismo que el archivo
Dreamer.aspx.cs.
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server" language="C#">
protected void DoDream(object sender, EventArgs e)
{
Dreams.Text = DreamBox.Text + "'s dreams are big!";
}
</script>
…rest of ASP.NET page
Para que sea más fácil de aprender.
Sin embargo, este libro utiliza el código generado cuando se utiliza Visual Studio 2008,
como una herramienta de desarrollo. Si prefiere utilizar otra herramienta, no dude en
hacerlo.
En el siguiente capítulo, verá cómo utilizar Visual Studio 2008 y proporcionar el código de
uso de otras herramientas, incluidas herramientas tan simples como el Bloc de notas de
Microsoft.
2.11 Ejecutando archivos ASP.NET en su ordenador o LAN
Cuando guarda un archivo como un archivo ASPX, puedes guardar el derecho de C# en
el archivo con los formularios ASP.NET utilizando la etiqueta <script> o puede utilizar el
método de “código subyacente”, descrito anteriormente.
Esto no significa que puede colocar sólo archivos ASPX y el código subyacente de
archivos de C# en un servidor web y todo funcionará. Usted necesita colocar sus archivos
en el servicio de alojamiento corriendo en IIS7, el cual puede ser su propio ordenador.
Puede hacer esto en su propio ordenador donde tiene Visual Studio 2008 configurado, po
lo que no está frente a una disyuntiva o alternativa.
2.12 Pregunte a los expertos
¿Por qué ASP.NET y C# se desarrollan en ventanas separadas si son parte del
mismo programa? ¿No son la mayoría de los programas desarrollados en un solo
archivo?
ASP.NET es un conjunto de formularios y controles, mientras que C# es un lenguaje
dinámico que no solo se comunica con ASP.NET sino que también con Base de datos y
enlaces externos.
Piense en la separación como si fuese un auto. El auto sin el motor se centra en la
disposición de los asientos y los diferentes controles hacen que su auto esté listo para ser
utilizado para el transporte. Este es el aspecto del código subyacente ASP.NET. El motor
del auto es lo que hace andar. Este es un elemento diferente que el cuerpo del auto y
tiene un tipo diferente de pensamiento a trabajar en el. Sin embargo, el motor interactúa
con la carrocería del auto y responde a sus controles. C# es como el motor, y tenerlos
separados durante el desarrollo, pueden centrarse en hacer lo que usted realmente
quiere.
2.13 Instalación y uso de un servidor IIS7 en su sistema
SI quieres trabajar con un entorno mas realista con los archivos que creaste con Visual
Studio 2008 o alguna otra herramienta, puede configurar un sistema ASP.NET de trabajo
en su propio ordenador y utilizarlo en su LAN.
Dependiendo de la versión de Windows Vista que usted tiene, usted puede tener o no IIS7
a su disposición, y si no lo hace, usted puede actualizar su versión de Windows Vista.
Los siguientes pasos le mostraran los procedimientos.
1° Clic en el botón Iniciar.
2° Clic en Panel de control.
Figura 2. 8
3° En el panel de control, pulse clic en Vista clásica.
Figura 2. 9
4° Doble clic en Programas y características.
Figura 2. 10
5° En el panel de exploración, pulse clic en Activar o desactivar las características de
Windows.
Figura 2. 11
6° SI aparece el control de cuentas de usuario, pulse clic en Continuar. Espere unos
instantes mientras se cargan los elementos de la ventana características de Windows.
Figura 2. 12
7° Pulse clic en el botón Más de Internet Information Services.
8° Ahora haga lo mismo para Servicios World Wide Web.
9° Expanda Características de desarrollo de aplicaciones.
10° Active la casilla Extensibilidad de .NET.
11° Active la casilla Extensiones ISAPI.
12° También active la casilla Filtros ISAPI.
13° Pulse clic en el botón Aceptar.
Figura 2. 13
14° Espere mientras el sistema configura los cambios.
Figura 2. 14
15° Para asegurarse de que está instalado correctamente, abra su navegador (Internet
Explorer, Firefox o cualquier otro navegador con el que trabaja bien).
16° Escribe la URL http://localhost/ en la ventana de su navegador. La siguiente imagen
muestra lo que verá si la instalación de IIS7 se trabajó con éxito.
Figura 2. 15
17° Después de la activación, usted encontrará algunas nuevas carpetas importantes.
Pulse clic en el icono Iniciar en la esquina inferior izquierda de la pantalla.
18° Pulse clic en Equipo.
19° Doble clic en Disco Local (C:).
20° Pulse doble clic en la carpeta inetpub.
21° Pulse doble clic sobre la carpeta wwwroot. La carpeta wwwroot es donde se colocan
sus aplicaciones ASP.NET como muestra la siguiente figura.
Figura 2. 16
22° La carpeta Dreamer contiene los archivos de aplicación ASPX y CS. Puedes colocar
los archivos de aplicación directamente en la carpeta wwwroot, pero con los demás
archivos y carpetas utilizados para la aplicación, las cosas parecerán desordenadas o
confusas si las hace. Es un mejor lugar para cada aplicación tener una carpeta separada
en wwwroot.
Utilizando Visual Studio 2008, cada aplicación Web genera una carpeta de aplicaciones,
un archivo ASPX, un archivo C# (CS), un archivo web.config y una carpeta App_Data.
Coloque el archivo XML web.config en el directorio raíz, si usted no tuviese una allí. Si la
deja en la carpeta de aplicaciones, no se podrá ejecutar la aplicación a través de Internet,
incluidos en una LAN.
La siguiente imagen muestra una típica carpeta de aplicaciones. El archivo web.config se
eliminó y se coloca en la carpeta wwwroot.
Figura 2. 17
Cuando ejecutas una aplicación ASP.NET desde su ordenador, convertido dentro de un
servidor ASP.NET, será capaza de ver una buena cantidad de formas con la que trabaja
ASP.NET.
Utilizando una simple aplicación Web que muestra a los usuarios la dirección IP, las
aplicaciones son ejecutadas desde diferentes entornos en una LAN compuesta por tres
equipos con Microsoft Windows Vista, Microsoft Windows XP y una Macintosh OS X.
EL equipo con Vista contiene Visual Studio 2008 y actúa como un servidor Web con
ASP.NET disponible.
EN primer lugar, la siguiente imagen muestra lo que puede esperar a ver cuando se
prueba la aplicación en Visual Studio 2008.
Figura 2. 18
SI usted ejecuta el mismo programa haciendo referencia de la dirección IP (a excepción
de 127.0.0.1), si esto es una LAN o dirección IP de Internet, usted verá una dirección IP
diferente cuando ejecuta el mismo programa en el mismo equipo, como lo muestra la
siguiente figura.
Figura 2. 19
Como puede ver en la figura anterior, la dirección del servidor (192.168.0.3) y la dirección
generada por la aplicación ASP.NET son idénticas. Esto es porque el cliente y el servidor
comparten la misma dirección IP.
La verdadera prueba llega cuando pruebe su aplicación en un equipo diferente. A
continuación, el equipo diferente es el cliente, y donde tiene configurado ASP.NET es su
servidor.
La siguiente figura muestra el programa en un equipo con Windows XP, mientras que el
servidor IIS7 es configurado en un sistema operativo Vista basado en un equipo diferente.
Figura 2. 20
En la imagen anterior puede ver claramente que la dirección IP del cliente es diferente de
la dirección IP del servidor. Ejecutando la aplicación ASP.NET en un cliente remoto,
puede ver mejor que está recibiendo no solo la dirección IP local del servidor.
La prueba acida para asegurar de que lo que está viendo no es solamente una pagina
web ordinaria que de al alguna manera obtiene la dirección IP desde su servidor para
ejecutar aplicaciones ASP.NET en un cliente que sabe que positivamente no puede alojar
ASP.NET. (Probablemente sabe que esto no se puede lograr con HTML o solo XHTML)
Afortunadamente, uno de los clientes en la LAN es una Macintosh y si llamamos al
archivo .aspx en una Mac, sabemos que la única forma de ver la dirección IP en MAC es
si estamos tratando con una verdadera aplicación del lado del servidor.
La siguiente imagen muestra lo que verá en su navegador Safari en una MAC.
Figura 2. 21
La figura anterior muestra más allá de cualquier duda que el que está haciendo todo el
trabajo es el lado del servidor ASp.NET combinado con un programa C# generado en el
servidor remoto.
¿Significa esto que puedes desarrollar aplicaciones en una Mac justo como lo harías en
una PC con Windows? Mmmm…. No exactamente.
Usted puede escribir sus aplicaciones C# y ASP.NET en una MAC utilizando un simple
editor de textos o algo más sofisticado como Dreamweaver o quizá un Expression Web.
A continuación transfiriendo el código alojado en ASP.NET, puede ver lo mismo como lo
hace en la figura anterior. Sin embargo no puedes alojar el código en una Macintosh
porque ASP.NET no puede ser configurado en una MAC.
Sin embargo, como verá en la siguiente sección, puedes trabajar con cualquier tipo de
sistema que quiera si usted tiene un servicio de alojamiento ASP.NET.
2.14 ASP.NET en el Mundo Real
Una de las mejores opciones disponibles es para desarrollar sus aplicaciones ya sea
utilizando Visual Studio 2008 o su herramienta de desarrollo Web favorito, y para colocar
aplicaciones en un servidor de producción.
Un servidor de producción es un lugar donde colocan sus aplicaciones para el uso real en
la Internet. Varias empresas proporcionan alojamiento ASP.NET junto con el software de
servidor necesario para ejecutar archivos ASP.NET.
El descuento de ASP.NET tiene una oferta que proporciona el 50% de descuento para
contratos de un año. Dentro de los primeros 30 días, si usted decide no querer el servicio,
puede obtener un reembolso completo. Si usted está como con el desarrollo de algunas
aplicaciones ya sea utilizando Visual Studio 2008 o su propio sistema con IIS7, tal vez
podría querer dar Descuentos ASP.NET para intentar ver como es el desarrollo en un
servicio de alojamiento.
La ventaja de utilizar un servicio de alojamiento de producción es que sus aplicaciones
pueden estar a prueba en el mismo entorno en la cual finalmente estará colocando los
archivos completos. Utilizando una LAN es un equivalente cerrado, y si usted tiene
múltiples ordenadores, esto es la mejor alternativa para un servicio de alojamiento.
Sin embargo, con grandes Base de datos y otros elementos consumiendo espacio, no
puedes derrotar un servicio de alojamiento. Mientras que Visual Studio 2008 es el entorno
de desarrollo recomendado, el entorno final de prueba es un servidor de producción.
2.15 Lenguajes asociados con ASP.NET
Los ejemplos para este libro están escritos en C# porque Microsoft lo recomienda.
También, C# es un lenguaje estándar ECMA 334. Esto significa que la sintaxis es similar
a la de otros lenguajes ECMAScript tales como ActionScript 3.0 y si usted comprende
una de los otros lenguajes ECMASCript, aprender otras es muy fácil.
Por lo tanto a pesar de que ActionScript 3.0 es desarrollado a lo largo de las líneas de los
estándares ECMA 262, tiene mucho más en común con C# que con las versiones
anteriores de ActionScript. Asimismo, JavaScript 2.0 se desarrollará como un lenguaje
ECMAScript, y tomando JavaScript 2.0 cuando este disponible debe resultar ser un menor
desafío si ya conoce C#.
Los lectores quienes están familiarizados con C, C++ o Java, encontrarán a C# muy
similar también.
Por lo tanto, utilizando C# no solo le ayudará a comprender en un lenguaje de Internet
estándar (ECMAScript), pero esto también ayudará a aprender algo acerca de otros
lenguajes en los que se basa ECMAScript.
SI usted ve un programa escrito en Java, por ejemplo, encontrará muchas estructuras que
se reconocen desde C#.
2.15.1 VB.NET, No exactamente más VB
Si usted está conforme con Visual Basic, le será conveniente desarrollar en ese lenguaje.
Utilizando Visual Studio 2008, puede seleccionar la opción para utilizar VB.NET. Sin
embargo, el Visual Basic de antaño no es mucho como VB.NET y puede que no salve
mucho tiempo ni muchas células cerebrales como usted podría pensar n un lenguaje que
conoce. sticking
Ademas, C# es utilizado ligeramente con ASP.NET, asi que podría ser buen momento
para aprender C# con ASP.NET mientras pueda obtenerlas en pequeñas dosis.
2.15.2 J# y JScript.Net, todavía se siente como un lenguaje de secuencia de
comandos
SI usted está familiarizado con JavaScript pero no sabe acerca de cualquier Visual Basic
o C#, usted podría querer intentar utilizar cualquier J# o JScript.Net. Ambos tienen la
sensación de JavaScript pero son diferentes uno del otro.
Sin embargo, a menos que tenga una buena razón, tales como trabajar en un entorno
donde J# o JScript.NET son utilizados, se recomienda C#.
EN primer lugar, encontrará muchas similitudes entre estos lenguajes y C#, asi que no es
un gran salto.
Capítulo 3:ASP.NET 3.5, Herramientas
y entornos de desarrollo
En algún nivel de codificación, casi todo se puede hacer con un simple editor de textos.
Utilizando un editor de textos para escribir códigos le da una enorme cantidad de
flexibilidad y una profunda comprensión de que está haciendo su programa. El trabajo
con ASP.NET 3.5, es lo mismo, pero creando aplicaciones ASP.NET con Notepad o
TextEdit pondrá la curva de aprendizaje bastante elevada.
Como se vio en el capitulo anterior, un programa ASP.NET es en realidad una
combinación de código ASP.NET y C#.
Por lo tanto, hacer el seguimiento de las cosas con un editor de textos es un poco difícil.
En este capitulo usted aprenderá todo acerca de una maravillosa herramienta potente que
no solo le ayudará en su aprendizaje de todas sus aplicaciones construidas, sino también
le ayudará en su aprendizaje acerca del código de los archivos con los que estará
creando.
3.1 Visual Studio 2008
La magnitud de ASP.NET 3.5 es tal, que usted necesita una poderosa herramienta que le
proporcione acceso sobre 7000 clases que ahora conforman ASP.NET. Como usted
conoce desde el capitulo anterior, las clases están organizadas entre espacios de
nombres (namspaces), pero con demasiadas clases que encontrar en cada uno, el
derecho de espacios de nombres es una ardua tarea.
Para hacernos la vida simple, Microsoft tiene diseñado una herramienta tan potente como
el lenguaje propio en Visual Studio 2008. SI usted está familiarizado con anteriores
versiones de Visual Studio, usted probablemente encontrará esta última versión familiar.
Sin embargo, asegúrese que esté utilizando Visual Studio 2008 para crear todas las
diferentes aplicaciones que encontrará en este libro.
Visual Studio 2008 incluye muchas nuevas propiedades y clases que no están disponibles
en Visual Studio 2005 o versiones anteriores.
Todos los ejemplos en este libro han sido desarrollados utilizando Visual Studio 2008, y
mientras que pueden ser duplicados utilizando un simple editor de textos u otras
herramientas de desarrollo Web tales como Dreamweaver o Expression Web, encontrarás
el proceso de desarrollo mucho más tedioso y propenso a errores.
Asimismo, puede ser capaz de desarrollar una buena parte de las aplicaciones sencillas
utilizando Visual Studio 2005, pero yo no quiero recomendar esto, porque antes o
después encontrará nuevas características que no están disponibles en Visual Studio
2005.
La mejor alternativa al uso de la versión completa de Visual Studio 2008 es utilizando la
edición Express. Mientras que Express Visual Studio 2008 no tienes todas las
funcionalidades de la versión completa, usted será capaz de seguir este libro y crear los
ejemplos.
3.2 Instalando Visual Studio 2008
Antes de instalar Visual Studio 2008, le recomiendo instalar el servidor Web IIS7 como se
describe en el capitulo anterior.
Puedes simular ejecutando aplicaciones ASP.NET 3.5 con Visual Studio 2008, pero con la
configuración IIS7, puedes en realidad ejecutar aplicaciones ASP.NET en un entorno Web
server-side utilizando la compilación y un entorno más realista. Sin embargo, esto es
estrictamente opcional. Instalar Visual Studio 2008 es sencillo y simple.
Antes de iniciar el proceso de instalación, verifique el espacio disponible en su disco duro
para asegurarse que tenga suficiente espacio. Desfragmente su disco duro antes de
instalar Visual Studio 2008.
EL programa ocupará varios gigabytes del disco duro, y no querrá tener el 90% del
proceso de instalación solo para encontrar que usted tiene espacio insuficiente en su
equipo.
Pulse clic en el icono de instalación, si usted tiene descargado Visual Studio 2008 desde
Microsoft o ha recibido un CD-ROM. Se paciente, la instalación toma unos largos minutos.
3.3 EL entorno de Visual Studio 2008
Una vez que tenga instalado Visual Studio y comience a utilizarlo, encontrará muchas
opciones diferentes. La única principal opción que quiera estar al tanto es el desarrollo en
C#. Encontrarás otros lenguajes disponibles para utilizar con ASP.NET como se vio en el
capitulo anterior.
Todas las aplicaciones de ejemplo se realizará con código conectado a un script C#. Esto
no es dificultad mantener sus aplicaciones C# en un entorno ASP.NET, pero si las cosas
no están mostrando los mismo en sus aplicaciones como están en el libro, puede ser
debido a que tenga accidentalmente el conjunto Visual Studio 2008 para VB.NET o para
algún programa con otro lenguaje que trabaja con ASP.NET.
SI bien la escritura del código es bastante sencilla, usted encontrará que Visual Studio
2008 le da mucha ayuda en obtener lo correcto.
A medida que empieza a ingresar código, los diferentes menús de contexto Pop up le
ayudaran a completar la línea de código o segmento.
Microsoft llama a esta característica IntelliSense y para aprender todo de las diferentes
características de ambos ASP.NET y C#, encontrarás estos menús de un valor
incalculable.
Como se ha señalado, ASP.NET tiene más de 7000 clases y estas clases tienen
propiedades, algunos tienen eventos y métodos. Los menús IntelliSense desplegarán
varias capas diferentes y proporcionan ayuda a como se desarrollan sus aplicaciones, y si
no utiliza menús contextuales que aparecen espontáneamente, puedes encontrar un poco
molesto, con ejemplos sencillos. Sin embargo, como usted valla avanzando, verá que lo
necesita urgentemente.
Como con la mayoría de tareas que requieren aprender algo nuevo, la mejor forma es
saltar y de hecho hacer algo una vez que haya completado los fundamentos.
En la siguiente sección, usted subirá y escribirá y probará una aplicación simple ASP.NET
utilizando C# como el mecanismo de tiro. A medida que valla a través de los pasos, las
características se describen para usted, y verá que utilizar Visual Studio 2008 es sencillo y
útil.
3.4 Creando una simple aplicación ASP.NET
El saque inicial de la aplicación utilizando Visual Studio 2008 es similar al “Hello World”
ejemplo que se encuentra en casi cualquier idioma. La aplicación utilizará un formulario
ASP.NET (Etiqueta) y el código C# colocará el valor del texto de la etiqueta Formulario en
la pantalla cuando abra la pagina.
Por lo tanto, sin mas demoras, seleccione Iniciar, Microsoft Visual Studio 2008 e iniciará.
Cuando abre Visual Studio 2008 por primera vez, usted verá las ultimas noticias de MSDN
y Proyectos recientes.
Después, como ha configurado su Visual Studio 2008 a la manera que le agrade, se
iniciará con las configuraciones que utilizó por última vez.
La siguiente figura muestra una típica configuración para Visual Studio 2008. En la parte
inferior, puedes ver la ventana Lista de errores y a lo largo de la parte superior del borde
derecho de la ventana de Visual Studio 2008, puede ver el Acoplado que cierra el
Explorador de Soluciones.
Todos los ajustes para la visualización de las diferentes herramientas y ventanas se
encuentran en el menú Ver.
Figura 3. 1
La mejor manera de empezar con ASSP.NET es crear una pequeña aplicación que haga
algo. Los siguientes pasos caminan a través de la creación de una aplicación y al mismo
tiempo señalar una serie de herramientas que puedes utilizar.
Antes de iniciar, sin embargo, necesitas comprender que crear una aplicación ASP.NET
es un poco diferente de crear una aplicación en C#.
En el menú Archivo, submenú Nuevo, verá 4 opciones:




Proyecto
Sitio Web
Archivo
Proyecto del código existente
Figura 3. 2
Para la mayor parte de este libro, usted podrá seleccionar Sitio Web y Guardar un archivo
ASPX que trabaja con los archivos CS que podrá crear simultáneamente.
La siguiente imagen muestra todos los menús y submenús seleccionado y abierto. Dado
la información, vamos a iniciar:
Figura 3. 3
1° Abrir Visual Studio 2008.
2° Clic en el menú Archivo.
3° Seleccione Nuevo.
4° Clic en Sitio Web. Quizá vea la pantalla un poco diferente dependiendo de cualquier
configuración que tenga hecho en Visual Studio 2008.
Figura 3. 4
Después de elegir Sitio Web, se muestra el cuadro de dialogo Nuevo Sitio Web. (Vea la
siguiente imagen). Las plantillas instaladas de Visual Studio deberían mostrar la opción
seleccionada Sitio Web ASP.NET.
Figura 3. 5
5° En el menú desplegable Lenguaje pulse clic en la flecha del lado derecho.
6° Pulse clic en la opción Visual C#.
Figura 3. 6
Nota: En la esquina superior derecha del cuadro de dialogo Nuevo Sitio Web, encontrará
un menú desplegable con la opción .NET FRAMEWORK 3.5, si no estuviese
seleccionada, procure seleccionarlo antes de continuar.
Figura 3. 7
Bien, escriba la ruta donde desea almacenar su aplicación, o pulse clic en el botón
Examinar y seleccione la ubicación de su archivo. Utilizando Visual Studio 2008 puedes
poner tus archivos en cualquier lugar, pero definitivamente querrá organizarlos en algún
lugar de manera que pueda ser fácilmente recuperado.
Figura 3. 8
7° Pulse clic en el botón Examinar.
8° En el cuadro de dialogo Seleccionar una ubicación, pulse clic en su carpeta de usuario.
En este ejemplo Handz.
9° Pulse clic en el botón Crear nueva carpeta y se crea WebSite.
10° Seleccione WebSite y nuevamente clic en Crear nueva carpeta.
11° Escriba el nombre: Aplicaciones.
12° Clic en Abrir.
Figura 3. 9
Ahora observe la nueva ruta donde se guardan sus aplicaciones.
Figura 3. 10
13° Al final de la ruta aumentamos el nombre de la aplicación: \App01
Nota: El último nombre de la ruta de ubicación de almacenamiento crea una nueva
carpeta y además toma el nombre de la aplicación.
Figura 3. 11
14° Después de haber escrito su ruta de almacenamiento, pulse clic en Aceptar. Después
de haber dado clic en Aceptar, aparece la ventana de codificación y una ficha con el
nombre Default.aspx.
Figura 3. 12
15° En primer lugar, seleccione la vista Código haciendo clic en el botón Código en la
parte inferior de las fichas de la página.
Figura 3. 13
Nota: Visual Studio 2008 genera automáticamente código que usted pueda empezar.
16° Desde la barra de menús, pulse clic en el menú Ver.
17° Clic en Cuadro de Herramientas.
Figura 3. 14
Nota: Si ya posee un cuadro de herramientas activo, puede obviar estos pasos.
18° En el Cuadro de herramientas, pulse clic en Estándar y observe todos los controles.
Casi todo lo visual que necesita está en el Cuadro de herramientas, y la mayoría de la
codificación ASPX se realiza arrastrando un objeto desde el cuadro de herramientas
estándar a la ventana de codificación.
Nota: Esto también sería buen momento para activar la ventana de depuración, Pulse clic
en el menú Ver y luego clic en Lista de errores.
Figura 3. 15
Observe la siguiente imagen que muestra una vista general de las herramientas activadas
hasta estos momentos.
Figura 3. 16
19° Pulse clic en el objeto Label del Cuadro de herramientas.
Figura 3. 17
20° Realice un arrastre hacia la ventana de codificación y sitúelo entre las etiquetas <div>
y </div>
Figura 3. 18
Tan pronto como el objeto Label este en su lugar y suelte el botón del ratón, se genera
automáticamente el código ASP.NET entre esas dos etiquetas.
Figura 3. 19
Nota: Más adelante verá lo que sucede si activamos la vista Diseño, pero por ahora, nos
centraremos en el código único.
21° A continuación necesita añadir un poco de código C#. Vamos a abrir la ventana de
código C#, pulse clic en Ver.
22° Luego clic en Código.
Figura 3. 20
Puede ver que el “Code Behind” (Código subyacente) se encuentra y utiliza en conjunción
con el código ASP.NET.
Figura 3. 21
Nota: Tenga en cuenta que el nombre del código C# es el mismo como el archivo
ASP.NET (ASPX) excepto que se incluye una extensión .CS.
Figura 3. 22
Por lo tanto, los archivos Default.aspx y Default.aspx.cs pueden ser vist os como “ir juntos”
y cuando empiece a colocar archivos en su servidor, tendrás que ver que se coloquen
juntos en una carpeta de la aplicación.
Nota: Más tarde verá como utilizar otros nombres “Default” para sus aplicaciones.
23° En la ventana de código C#, encuentre la línea que empiece con:
protected void Page_Load(object sender, EventArgs e)
24° Pulse clic al final de la primera llave (línea 16) y luego pulse la tecla Enter para crear
una nueva línea (Línea 17).
25° Escribe: Label1. Observe que cuando comienza a escribir Label1 aparece una
ventana emergente como lo muestra la siguiente imagen.
Figura 3. 23
Este es la ventana IntelliSense, el cual reconoce objetos de los archivos ASP.NET.
CVUando usted arrastra el objeto Label al escenario, se da automáticamente el ID de
“Label1” en el código ASPX.
Las características IntelliSense reconocen todos los objetos e instancias en el código
ASPX y utiliza los IDs existentes de forma para ayudar a crear los códigos necesarios en
la ventana de C#.
Utilice sus teclas direccionales para resaltar Label1 en la lista y pulse Enter para que la
palabra aparezca automáticamente en el código.
Nota: Desafortunadamente, es fácil confundirse de Label (un objeto) y del ID automático
de Label1.
26° Una vez que aparece Label1 en la ventana de código, escribe un punto (.). Tan pronto
como escriba el punto (Algunas veces llamado periodo), aparece el menú IntelliSense otra
vez y muestra todas las diferentes propiedades y otros elementos asociados con la clase
Label como lo muestra la siguiente imagen.
Figura 3. 24
27° Utilice las teclas direcciones para desplazarse hasta Text en la ventana IntelliSense.
Figura 3. 25
28° Pulse la tecla Enter. Ahora verá Label1.Text.
29° Después de Label1.Text agregue:
="Esta aplicación ASP.NET 3.5 es escrita por <Tu nombre>";
Nota: En C# necesitas agregar un punto y coma al final de cada declaración, pero usted
no pone en las líneas finales de ASP.NET.
Figura 3. 26
30° Pulse clic en el menú Archivo y luego clic en Guardar todo.
Figura 3. 27
Nota: También puedes pulsar Ctrl + Mayus + S. Esta acción guarda ambos archivos, CS y
ASPX. Usted siempre necesitará grabar ambos archivos cuando pruebe su programa.
Importante: En la cadena de texto de la codificación en C#, aparece <Tu nombre>
indicando que debes escribir tu nombre pero no debes poner los símbolos menor y mayor.
SI lo haces, entonces no aparece nada a la hora de ver la página, esto es porque C#
reconoce los símbolos menor y mayor como una etiqueta.
31° Ahora vamos a probar la aplicación, pulse clic en el menú Depurar.
32° Clic en la opción Iniciar sin depurar o pulse Ctrl + F5.
Figura 3. 28
Si bien esta aplicación es un poco mejor que el ejemplo “Hello World”, esto muestra el
procedimiento esencial para crear scripts en ASP.NET y C# utilizando Visual Studio 2008.
Para tener una visión general, en la siguiente sección se examinará el código de ambos
archivos ASPX y CS.
Figura 3. 29
3.5 Pregunte a los expertos
¿Por qué aparecen errores en la ventana Lista de errores cuando escribo un
código?
YO tomaría a la ventana de la Lista de errores como un no preocupante bicho que se
encuentra en el trabajo. Cada vez que completes una línea de código, si es el formato
correcto, el mensaje desaparece. Pero en lugar de ver a la ventana Lista de errores como
un quisquilloso bicho, tenga en cuenta que en realidad es su mejor amigo, y le ahorrara
horas en la depuración de código.
3.6 Archivos ASPX y C#
Más código generado automáticamente en ambos archivos ASP.NET y C# que se
ingresan escribiendo. Entender lo que Visual Studio 2008 ha hecho y lo que tendrá que
hacer puede ser mejor logrado cuando se establecen los dos archivos.
Las siguientes dos sub-secciones explican todo el código generado y lo que se añade por
el desarrollador (usted).
3.6.1 El archivo ASPX
En primer lugar, examinaremos ASP.NET como un todo.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label>
</div>
</form>
</body>
</html>
En su mayor parte, este script se parece mucho al estándar XHTML. De hecho, parece
como una simple pagina de vainilla en HTML. Sin embargo, la primera línea tiene mucho
más información que un típico HTML. Se ha desglosado en 3 segmentos.
<%@ Page Language="C#"
Este primer segmento de la página permite saber el lenguaje que se utiliza es C# y no VB
o algún otro lenguaje.
El siguiente segmento tiene un Booleano especial, AutoEventWireup, y requiere una
explicación más extensa.
AutoEventWireup="true"
El Booleano AutoEventWireup indica si las páginas ASP.NET están automáticamente
conectadas a funciones del manipulador de eventos. Con C#, el valor predeterminado es
True, también las paginas están conectadas a las funciones del manipulador de eventos.
AL final de la sección se indica el nombre del archivo C# y lo que hereda. Como vimos
anteriormente, Visual Studio 2008 asigna automáticamente un nombre de archivo a al
archivo de código ASP.NET que se utiliza, y dado que el nombre del archivo ASP.NET es
Default.aspx el archivo de código es Default.aspx.cs. Esa parte es bastante sencilla.
CodeFile="Default.aspx.cs" Inherits="_Default" %>
El atributo Inherits, se refiere al nombre de la clase que hereda el código. Esto puede ser
un poco confuso porque en C# la referencia para una clase que hereda a otra es
simplemente con el símbolo dos puntos (:). Por ejemplo, en el código C# verá el
ejemplo…
public partial class _Default : System.Web.UI.Page
Esto significa que la clase _Default hereda la clase System.Web.UI.Page. En el archivo
ASPX, el atributo Inherits simplemente apunta a la calse que hereda la página.
3.6.2 El archivo C#
Las primeras 11 líneas del script están utilizando directivas que indican que los espacios
de nombres estén disponibles. Porque son parte de una plantilla, esto un todo o único
propósito cuando se abre el archivo del código C# en la plantilla. De hecho, si se quita
todo pero la primera directiva se utiliza, la aplicación trabaja perfectamente bien. En el
panorama general del script, tenga en cuenta que todas las directivas predeterminadas
son innecesarias. Por el momento, sin embargo, dejémosle tal y como está.
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "This ASP.NET 3.5 application written by Your Name";
}
}
La definición de la clase C# empieza con la línea:
public partial class _Default : System.Web.UI.Page
Esta declaración que anuncia el nombre de la clase es _Default y que hereda
System.Web.UI.Page.
Desde un punto de vista estricto en C#, la clase parcial le permite dividir un clase dentro
de en más de un solo archivo. Esto es útil cuando tiene una gran clase o tiene múltiples
desarrolladores trabajando en una sola clase con diferentes asignaciones.
El compilador considera que varios archivos de clases parciales son una sola clase,
porque la parte interna no se ha modificado.
Cuando traba con archivos ASP.NET (ASPX) y C#, puede considerar los archivos ASPX y
los archivos CS como código fuente para múltiples partes de las clases parciales.
Estrictamente hablando, esto no es totalmente preciso, pero para todos los fines
prácticos, es una manera útil de considerar sobre los valores de una clase parcial en C#
con un archivo ASP.NET.
Más preciso, las clases parciales de C# permiten declarar todos los controles del lado del
servidor que ha declarado en su archivo ASPX. Además, las clases parciales permiten
automáticamente generan código que se almacena en un archivo temporal desde el
código generado. Así, a lo largo de este libro, usted verá los tipos de modificación parcial
en una definición de clase.
La palabra clave Public especifica la accesibilidad de la clase como disponibles para otra
clase. La mayoría de las clases son inicialmente definidas como Public, y si deseas
delegar la clase para otra clase, esto será accesible. (Encontrará más de la clase y
objetos modificados en el próximo capitulo, cuando C# sea revisado con más detalles)
EN la declaración de clase, la clase hereda toda la clase System.Web.UI.Page. Esto
significa que todas las propiedades en System.Web.UI.Page estan disponibles en la clase
de nombre _Default. A lo largo del libro, usted verá muchas propiedades y otros
elementos de la clase System.Web.UI.Page (clase Page) en uso. Por ejemplo,
IsPostBack, el cual se discutirá más adelante, es una propiedad que se usará, que es
parte de las clases Page.
Las funciones claves en el código C# trabaja con una función integrada que actúa como
un manipulador de evento, Page_Load().
protected void Page_Load(object sender, EventArgs e)
El evento simplemente espera hasta que la página sea cargada para lanzar
independientemente lo que dice el código. Por defecto, la función Page_Load() es un todo
del script C#, y si lo ignora, no sucede nada.
Si usted va a utilizar otros manipuladores de eventos, tales como Hacer clic en un botón,
pueden quitar la función. Los parámetros son estándares y son utilizados para pasar
cualquier información que necesitase. Como los ejemplos que requieren los parámetros
que aparecen en el libro, su uso se muestra en la ilustración.
Como conocen del trabajo a través del ejemplo, la línea….
Label1.Text = "Esta aplicación ASP.NET es escrita por Handz Valentín";
Es lo que agrega utilizando Visual Studio 2008. Recuerde que Label es un form de un
Web form ASP.NET, y Text es una de las propiedades del form. Además, tener en cuenta
que los formularios se ejecutan en el servidor, y la única manera para que el código del
archivo ASPX se ejecute es atreves del vinculo del archivo ASPX al archivo C# y la
herencia de sus clases.
En este punto, no es necesario esperar a comprender todo. En el ejemplo utilizado se
muestra como utilizar Visual Studio 2008 y no como trabajar en conformidad con C# y
ASP.NET. Sin embargo, deberías ser capaz en ver una imagen general del proceso de
desarrollo de aplicaciones utilizando Visual Studio 2008. Además, tenga en cuenta que
Visual Studio es enorme, y como vaya progresando a través del libro, usted encontrará
más elementos de esta importante herramienta de desarrollo.
En la próxima sección, verá un poco más de lo que puede hacer con Visual Studio 2008 y
como se puede utilizar para darle exactamente lo que usted quiera.
3.7 Más herramientas de Visual Studio 2008
Para ver más útil las herramientas en Visual Studio 2008, puede cambiar la codificación
de ASP.NET en el ejemplo que ha desarrollado en este capitulo. El siguiente conjunto de
pasos empieza con su pagina ASP.NET (Default.aspx) y agregar propiedades para
salidas eventuales.
1° Si no ha abierto la pagina Default.aspx en Visual Studio 2008, hágalo ahora. Pulse clic
en el menú Archivo.
2° Señale Abrir, aparece una lista de opciones.
3° Clic en Archivo…. Aparece el cuadro de dialogo Abrir archivo.
Figura 3. 30
4° En el cuadro de dialogo Abrir archivo, navegue hasta encontrar el archivo Default.aspx.
5° Clic en Abrir.
Figura 3. 31
Nota: Si ya tenía abierto el archivo Default.aspx, entonces puede obviar los pasos
anteriores.
7° Sitúe el cursor hacia la derecha después de <asp.Label ID="Label1" y pulse Enter para
agregar una salto de línea. A continuación reemplace el código actual por el siguiente:
runat="server"
Text="Label" />
Figura 3. 32
8° Elimine la siguiente etiqueta:
</asp: Label>
Figura 3. 33
9° Pulse clic en el menú Ver.
10° En la lista desplegable, pulse clic en la opción Ventana propiedades o pulse F4.
Figura 3. 34
Nota: Si ha configurado Visual Studio 2008 anteriormente, quizá ya tenga activo la
ventana de Propiedades.
Figura 3. 35
11° Seleccione la etiqueta Label <asp:Label como lo muestra la siguiente imagen.
Figura 3. 36
Al seleccionar esta etiqueta, la ventana Propiedades muestra las opciones del control.
12° Sitúe el cursos entre Text="label" y /> y pulse Enter.
Figura 3. 37
13° En la ventana de Propiedades, seleccione ForeColor,
14° Al lado derecho de la Propiedad ForeColor escribe: AntiqueWhite. Ahora pulse la tecla
Tab.
AL pulsar la tecla Tab, en la ventana de código ASP.NET se mostrará
ForeColor=”AntiqueWhite” y en la ventana de Propiedades se mostrará AntiqueWhite.
(Vea la siguiente imagen)
Figura 3. 38
15° Sitúe el cursor entre =”AntiqueWhite” y /> y pulse Enter.
Figura 3. 39
16° Seleccione BackCOlor en la ventana Propiedades. Debería ver un boton al lado
derecho con 3 puntos.
Figura 3. 40
17° Clic en el botón de puntos. Aparece el cuadro de diálogo Más colores.
18° Clic en el color que desee.
19° Clic en Aceptar.
Figura 3. 41
A veces cuando seleccionas un color, verás un nombre en el cuadro Nombre, tal como lo
ve en la siguiente figura.
Figura 3. 42
Otras veces no verá ningún nombre. Si no ves ningún nombre, como es el caso del color
con valor 990000, verás un valor Hexadecimal en la ventana Propiedades expresado
como #990000 (o cualquiera que sea el valor hexadecimal)
Figura 3. 43
20° Pulse Ctrl + F5 para ver como ha quedado su página. Debe ver su página con el color
de texto blanco (ForeColor) y con el fondo del Label en el color elegido.
Figura 3. 44
3.8 Pregunte a los expertos
¿Por qué algunos colores tienen nombres y otros no, y como fueron seleccionado
esos nombres?
Los nombres de los colores .NET fueron seleccionados de un conjunto estándar conocido
como X11. Hasta ahora estoy tratando de averiguar porque existen nombres como “aqua”
y no “cyan” y en que lugar del mundo lo llaman “papaya whip”.
El propósito más importante de la Ventana Propiedades y el menú emergente IntelliSense
es aprender el código en ASP.NET y C#. Con literalmente miles de clases y cada clase
con sus propias propiedades, métodos y eventos, Visual Studio 2008 le ahorra una
enorme cantidad de tiempo.
Obviamente un buen libro de referencia de ASP.NET y C# le ayudarán, pero con tantas
clases, opciones, parámetros, eventos y declaraciones, su trabajo será muy fácil con la
versión computarizada en Visual Studio 2008.
En el transcurso de este libro, se le mostrará como sacar el máximo partido de ambos,
Visual Studio y los programas escritos utilizando ASP.NET y C#, y como los nuevos
elementos son introducidos, también verá como se hace uso de una de las muchas
herramientas en Visual Studio 2008.
3.9 Otras herramientas para el desarrollo de ASP.NET con C#
Además de utilizar Visual Studio 2008, puedes utilizar otras herramientas también. Dado
que Visual Studio 2008 es solo para Windows, los que trabajan con computadores
Macintosh u otros sistemas operativos que no sean Windows, tales como Linux y UNIX,
necesitan otras herramientas.
3.9.1 Dreamweaver
Para Macintosh y sistemas Windows, encontrarás el popular programa de desarrollo Web
Dreamweaver de Adobe que tiene soporte para ambos, ASP.NET y C#.
Dado que ASP.NET es nuevo, necesitas tener cualquier versión de Dreamweaver que se
libera después de la versión oficial de ASP.NET 3.5 para garantizar la plena
compatibilidad. Si tienes una versión anterior de Dreamweaver, sin embargo, todavía
puedes tener una valiosa ayuda de Dreamweaver.
Por ejemplo, la siguiente imagen muestra como Dreamweaver tiene un menú contextual
que muestra la selección de Web forms de ASP.NET y otras opciones disponibles.
Figura 3. 45
También debería notar en la imagen anterior que en lugar de colocar el código C# en un
archivo CS independiente utilizando una clase parcial, Dreamweaver utiliza el método de
script incrustada al inicio de la línea 4.
<script language=C#>
Dependiendo de cómo le guste trabajar con el code-behind de C#, esta alternativa
incrusta estilos que pueda o no ser de su preferencia. Utilizando Dreamweaver, tendrás
para utilizar un servicio de alojamiento online de ASP.NET porque no podrá probar sus
aplicaciones como usted los desarrolla en Visual Studio.
3.9.2 POTE (Plain Old Text Editor)
SI no tiene más que un simple editor de textos (o prefiere escribir sus propios códigos sin
ayuda), puede hacerlo con cualquier editor que guarde el código como texto sin formato.
Para sistemas tales como MAC OS o LINUX, puede no tener cualquier otra alternativa, así
que utilice un editor de textos que funcione bien para el desarrollo de código.
Puede tener que escribir y grabarlo como un archivo ASPX con incrustaciones C#. De
hecho, puede escribir utilizando code-behind en C# si se quiere, pero no se puede
compilar el C# a menos que el lugar de sus aplicaciones se encuentre dentro de un
servicio de alojamiento que compilará C# y ASP.NET juntos.
Si está utilizando MAC y el editor de textos TextEdit, necesitará cambiar las preferencias
predeterminadas en su editor. El formato predeterminado de TextEdit es Rich Text Format
(Formato de texto enriquecido RTF) y tiene que cambiar a texto sin formato. Para hacerlo
siga estos pasos:
Seleccione TextEdit., luego Preferencias y luego Texto sin formato (radio button) como lo
muestra la siguiente imagen.
Figura 3. 46
Como puede ver en la figura anterior, el código es idéntico al que se genera con Visual
Studio 2008, y un archivo independiente de C# se hace referencia. Si guardar el código
fuente como un archivo ASPX y CS, respectivamente, se debería trabajar bien con un
servicio de alojamiento ejecutando IIS7 y ASP.NET 3.5. Por lo tanto, en lo posible, implica
más trabajo y acceso a un servidor IIS7.
3.10 Training Max 1: Descargar Visual Web Developer 2008 Express
Edition.
Vamos a descargar este IDE para comenzar a trabajar con códigos ASP.NET. Recuerda
que este programa es una versión ligera de Visual Studio 2008 y no tiene todos los
componentes para trabajar en modo profesional, pero por ahora aprenderemos a
descargar este programa.
Nota: Puedes utilizar este programa para realizar sus prácticas. En este libro, se utiliza
Visual Studio 2008.
1° Abrir su explorador Internet Explorer.
2° En la Barra de direcciones escribe: http://www.microsoft.com/express/download/
3° Pulse Enter para ingresar a la página.
4° En la sección Visual Web Developer 2008 Express Edition, pulse clic en la flecha del
cuadro desplegable y seleccione el idioma Spanish, que es el que dominamos.
Figura 3. 47
5° Al lado derecho, pulse clic en Descargar.
6° Guarde el instalador en algún directorio y comience a descargar.
Instalando Visual Web Developer 2008 Express Edition en Windows XP
3.10.1 Visual Web Developer 2008 Express Edition
Si tiene instalado versiones prelease de Visual Web Developer Express, Visual Studio
2008/Orcas, SQL Server, SQL Server Express o .NET Framework 3.5, yo recomiendo
desinstalarlos para iniciar con un sistema tan limpio como sea posible.
Siempre utilice utilidad de desinstalación de Windows para eliminar Software. En Windows
XP, siga estos pasos:
1° Ingrese al Panel de control desde el menú Inicio.
2° Cambie a la Vista Clásica para tener una mejor visión de sus iconos.
3° Doble clic al icono Agregar o Quitar programas (En Windows Vista es Programas y
características).
4° Seleccione el programa a desinstalar.
5° Clic en Cambiar o Quitar.
Como ha visto pasos atrás, se puede descargar una copia libre de Visual Web Developer
2008 Express Edition desde el Sitio Web de Microsoft. La instalación completa se
describe en esta sección, el cuál requiere 3.5 GB de espacio en disco (Unidad C:) y un
total de 447 MB para la descarga.
Si alguna parte de la instalación falla, regrese al Web Site de Microsoft (mostrado en
pasos anteriores), e inicie el proceso otra vez, el instalador deberá iniciar desde donde se
detuvo.
3.11 Training Max 2: Instalando Visual Web Developer 2008 Express
Edition
1° Después de haber descargado el instalador de Visual Web Developer 2008 Express
Edition, pulse doble clic sobre el instalador. Espere algunos segundos mientras carga los
archivos para la instalación.
2° En la pantalla de Bienvenida del asistente de instalación, pulse clic en el botón
Siguiente.
Figura 3. 48
Nota: Puede activar la casilla de verificación Sí, enviar a Microsoft Corporation
información sobre la instalación, de está manera entregas información anónima a
Microsoft sobre el proceso de instalación.
3° En la pantalla de los términos de licencia, lea cada palabra de la licencia, consulte a
alguien experto (su abogado) y luego clic en la opción He leído y acepto los términos de
la licencia.
4° Clic en Siguiente.
Figura 3. 49
5° En la pantalla Opciones de instalación, verifique que estén activos todas las casillas de
verificación para poder descargar los programas respectivos, en este caso, SQL Server
2008 Express Edition y Silverlight Runtime.
Nota: Anteriormente también se podía descargar MSDN Library (La biblioteca) pero ahora
lo puede hacer por separado desde el sitio Web de Microsoft.
6° Clic en Siguiente.
Figura 3. 50
7° En la pantalla Carpeta de destino, verifique la ruta donde se almacenará el archivo.
Pulse clic en Instalar:
Nota: Si desea puede cambiar la ruta de instalación de Visual Web Developer 2008
Express Edition.
Figura 3. 51
8° Ahora debemos esperar que se complete la descarga de algunos programas e instale
Visual Web Developer 2008 Express Edition.
Figura 3. 52
9° Después de esperar un promedio de una hora, el programa ya se encuentra instalado.
Clic en Salir y reinicie su equipo.
Figura 3. 53
Hasta este punto, usted tiene el software instalado y listo para asumir un giro. En esta
sección, crearás una página sencilla para que pueda explorar el entorno. SI está
impaciente para tomar un largo proyecto, de un salto hasta otro capitulo más avanzado y
a continuación regrese para “Ajustar su entorno de desarrollo” más tarde en este capitulo
para algunos consejos de configuración.
3.11.1 Iniciar el IDE
Podemos iniciar cualquier programa que tenga la integración con entornos de desarrollo,
en este caso puedes utilizar Visual Web Developer 2008 Express Edition, en caso de no
tener instalado Visual Studio 2008. En este ejercicio también puedes utilizar Visual Web
Developer 2008 Express Edition en un entorno Windows XP.
Training Max 3: Crear un Web Site ASP.NET
1° Al abrir Visual Studio 2008 o Visual Web Developer 2008 Express Edition, pulse clic en
el menú Archivo, señale Nuevo y clic en Sitio Web.
Figura 3. 54
2° En el cuadro de diálogo Nuevo sitio Web, pulsa clic en Sitio Web ASP.NET para elegir
esta plantilla.
Figura 3. 55
3° En el cuadro Ubicación, verifique que se encuentre de la siguiente manera.
Figura 3. 56
4° Pulse clic en Aceptar.
5° En la ventana de código, pulse clic en la ficha Diseño.
Figura 3. 57
6° Pulse clic sobre el rectángulo que se encuentra en la parte superior del panel de
Diseño.
Figura 3. 58
Observe que aparece una representación de una etiqueta en HTML <div> y además
muestra una ficha.
7° En el cuadro de herramientas, arrastre el control Button y sitúelo dentro del rectángulo
que posee la etiqueta <div>.
Figura 3. 59
8° En el panel de Diseño, pulse clic en la ficha Dividir. Observe que ahora puede ver tanto
el diseño de la página como el código autogenerado.
Figura 3. 60
9° Clic en el menú Ver, señale Regla y cuadricula y luego clic en Mostrar Regla. Observe
que aparece una regla en el área de Diseño, más no en el área de Código.
10° Pulse clic en el menú Archivo y luego clic en Guardar todo.
11° Nuevamente clic en el menú Archivo y clic en Cerrar. Se cierra la página de ASP.NET.
Nota: Admito que esta página es muy simple, pero nos ha ayudado a conocer un poco
más de la interfaz de Visual Studio 2008 o Visual Web Developer 2008 Express Edition.
Capítulo 4: C# y ASP.NET 3.5
Este capitulo le proporciona los principios de C# pronunciado (see-sharp). Un muy
pequeño subconjunto de C# que es utilizado con la mayoría de aplicaciones ASP.NET,
pero si entiendes lo básico de C#, serás capaz de hacer mucho más con lo que necesita
utilizar en C#.
Aunque Visual Studio 2008 escribe buena parte del código C# para usted, sabiendo que
C# esta ayudándole en su desarrollo con ASP.NET.
4.1 C# 3.0 y ASP.NET 3.5
Como ha visto en los capítulos anteriores, Visual Studio 2008 crea una clase parcial en
C# cuando usted comienza a desarrollar paginas Web ASP.NET. Llegando a entender lo
que hace C# y como está estructura se puede lograr a partir con los fundamentos de C#,
aunque estos fundamentos no pueden ser vistos inmediatamente en el pequeño código
que todos ustedes utilizan en aplicaciones básicas ASP.NET.
4.2 Casos, Nombres de variables e Instancias
La primero para entender C# es que a diferencia de algunos lenguajes, C# es sensible a
las mayúsculas y minúsculas. Esto significa que cuando hace referencia a una variable o
instancia de clase en C#, necesitas estar seguro de que la referencia de nombres tomen
en cuenta las mayúsculas y minúsculas del nombre. Por ejemplo, las siguientes tres
variables son todas diferentes:
merryWidows
MerryWidows
Merrywidows
Por lo tanto, si quiere utilizar la referencia MerryWidows, no puede utilizar…
merryWidows
MERRYWIDOWS
merrywidows
Debe utilizar MerryWidows y punto.
En su mayor parte, probablemente no querrá simplemente cambiar las mayúsculas y
minúsculas de los diferentes caracteres para crear diferentes nombres de variables. Por
ejemplo, si tienes dos diferentes variables para el nombre: Perro Peruano.
perroPeruano
Perroperuano
Es muy probable confundirse usted mismo y cualquier persona que esté trabajando con
usted en el desarrollo de una aplicación. Aunque la sensación de Mayúsculas y
minúsculas permite diferenciar entre los nombres de la variable, no significa que tenga
que hacerlo.
Solo tenga en cuenta que todas las etiquetas necesitan ser claras al contexto de su uso, y
utilice nombres como:
PerroPeruano1
PerroPeruano2
PerroPeruano3
Están mucho más claras estas simples diferencias utilizando combinaciones de casos.
Sin embargo, puede hacer la vida mas simple nombrando instancias utilizando minúsculas
para el inicio de los nombres de clases.
perroPeruano1
perroPeruano2
perroPeruano3
Por ejemplo, supongamos que ha desarrollado una clase y lo nombró Monitor. Cuando
comience a declarar una instancia de la clase Monitor, puede querer utilizar lo siguiente:
Monitor monitor = new Monitor();
Después, cuando esta utilizando el objeto monitor (Instancia), es fácil de recordar como
una instancia de la clase Monitor. Si necesitas varias instancias de la clase Monitor,
entonces querrá tener alguna forma de distinguir entre las instancias, tales como:
Monitor redMonitor = new Monitor();
Monitor greenMonitor = new Monitor();
Monitor blueMonitor = new Monitor();
La regla de dirección en todas las etiquetas es utilizar sentido común en l os contextos del
proyecto. Dado que, solo recuerde que sus etiquetas son sensibles a las mayúsculas y
minúsculas.
Nota: Si está familiarizado con JavaScript, Java, C++, o ActionScript 3.0, encontrará
muchas de las mismas estructuras y formatos que están en C#. Con el tiempo, los
lenguajes de Internet como C# y JavaScript tendrán un conjunto subyacente común de
estructuras en cumplimiento de determinadas normas estándar European Computer
Manufacturers Association (ECMA). Encontrará diferencias, pero ECMA se está
convirtiendo como un lenguaje estándar. Para el completo estandarizado en C#, vea
www.ecma-international.org/publications/standards/Ecma-334.htm.
4.3 Tipos, Declaraciones y Expresiones
Como muchos lenguajes de programación, C# alterna con diferentes tipos de datos. Por
ejemplo, puede estar familiarizado con tipos numéricos y cadena. Los números pueden
ser utilizados para cálculos matemáticos, y cadenas, para el almacenamiento de texto.
Asignando un valor para una variable se requiere el tipo de datos para ser incluidos en la
declaración de la variable. Por ejemplo, las siguientes dos variables representan una
declaración integer y una declaración string.
string myString;
int myNumber;
Un lenguaje que requiere un tipo por variable, constantes y objetos es un lenguaje
estrictamente escrito, así mismo C# puede ser considerado como estrictamente escrito.
Cada instrucción completa, si es simplemente para declarar una variable o algunas
operaciones más complejas, es llamada statement (declaración).
Cada declaración se termina con un punto y coma (;) y si el punto y coma se deja fuera,
se produce un error.
Una vez que usted ha declarado una variable, puede entonces asignar un valor. Por
ejemplo, utilizando la variable que acabamos de declarar, podríamos escribir…
myString = "Happy programming";
myNumber = 45;
y las variables contienen los valores que asignamos. Cualquier tipo de declaración que
resulte en un valor que se asigna a una variable, constante u objeto es llamado
expression. Una expresión puede, o bien ser una simple asignación, o puede ser mas
compleja e implica cálculos y incluso las variables a escribir.
Por ejemplo, las siguientes declaraciones son expresiones de una variable type (declarar
un tipo de variable) y asignarle un valor compuesto de valores calculados y otras variables
(anotherNumber) y una combinación de cadenas literales y una cadena variable
(anotherString):
int myNumber = 45 + (anotherNumber - 3);
string myString = "Name: " + anotherString + " Smith";
Una vez que haya estructurado su variable, se puede ejecutar en problemas como
intentar asignar el tipo incorrecto de valores para una variable. Por ejemplo, la siguiente
asignación devuelve 2 errores.
int myNumber = "Calculate this: 2 * 10";
string myString = 33 * 22;
En el primer caso, la variable numérica esta asignado a una cadena literal (una cadena
literal, es un valor real) Cualquier expresión encerrada entre comillas es tratada como una
cadena literal.
En el segundo caso, no solo son los valores para una cadena de valores numéricos, sino
también las expresiones contienen un operador numérico (*) para la multiplicación.
4.3.1 Detalles de los tipos
Diferenciar entre números y cadenas es bastante fácil. La cosa se hace un poco difícil
cuando comience a ver los diferentes tipos de datos. Con texto, los dos tipos básicos de
datos son string y char.
El tipo de dato char contiene un solo carácter de texto tales como a, b, c, 5 o @ (Cada
carácter es un carácter Unicode). Un tipo de dato string contiene una serie de caracteres
Unicode, tales como “Eres mi @mor”. El tipo de dato char requiere una menor reserva de
memoria porque cada valor es la misma longitud. El tipo de dato string requiere más
memoria porque la cantidad de memoria depende del número de caracteres.
También, Tanto los números y cadenas son diferentes, por lo tanto son tipos char y string.
Por ejemplo, el siguiente código lanzaría un error…
char myCharacter = "Top of the morning!"; //Error!
Porque más de un solo carácter Unicode es el valor asignado para un tipo de variable
char. La mayoría de los ejemplos de C# que se verán en este libro utiliza el tipo de dato
string.
Con tipos numéricos, encontrará muchos más tipos. En el sentido más básico, puede
dividir tipos de números dentro de un conjunto de números (integers) y números de punto
flotante (contienen fracciones)
Puede también dividir tipos de números firmados (puede tener ambos valores positivo y
negativo) y sin firma (solo positivos y negativos)
Finalmente, los tipos que se encuentra bien son construidos en (Intrinseca) o creados a
partir de clases e interfaces. Usted estará utilizando intrínsecas y basado en lo tipos de
clase.
Tipo C#
Tipo .NET
byte
bool
short
ushort
long
Byte
Boolean
Int16
Ulnt16
Int64
ulong
Ulnt64
int
Int32
uint
float
Ulnt32
Single
double
Double
decimal
Decimal
Descripción
Bytes
bits)
Enteros sin signo (0-255)
1
Verdadero o falso
1
Enteros con signo de -32,768 a 32767
2
Enteros sin signo de 0 a 65,535
2
Enteros con signo de -9 ,223,372,036,854,775,808 8
a 9,223,372,036,854,775, 807
Enteros
sin
signo
de
0
a 8
18,446,744,073,709,551,615
Enteros con signo de
–2,147,483,648 a 4
2,147,483,647
Enteros sin signo de 0 a 4,294,967,295
4
1.5 × 10−45 to 3.4 × 1038, 7-digitos de precisión 4
(requiere f o F al final del literal)
5.0 × 10−324 to 1.7 × 10308, 15-digitos de 8
precisión (requiere d o D al final del literal))
1.0 × 10−28 to 7.9 × 1028, 28-digitos de precisión 12
(Requiere m o M al final del literal)
(8
La tabla anterior es un esquema común de tipo de números intrínsecos que
probablemente lo utilice.
Usted encontrará que escribiendo datos le ayudará a organizar su programa. Sin
embargo, porque se trata de datos procedentes de la entrada de estructuras en ASP.NET,
necesita considerar las traducciones de la entrada de datos utilizando formularios
ASP.NET y análisis de datos C#.
4.4 Pasando valores entre ASP.NET y C#
Utilizando los formatos de clases parciales que conectan ASP.NET a C#, debe ser
consiente que los nombres creados en ASP.NET son utilizados por C#. Por lo tanto, en
cualquier discusión de C# y ASP.NET, tiene que entender como trabaja el nombramiento.
En ejemplos anteriores, usted vio algunos ejemplos de código C# asignando valores, y
aquí vamos a tener una vista final a la conexión entre lo que ASP.NET establece y como
C# puede utilizar estructuras de ASP.NET.
Tomemos por ejemplo la siguiente tarea.
-
Dos valores de entrada del usuario. El primer valor es multiplicado por 85 y el
segundo por 15. La respuesta muestra la suma de los productos.
Este es un problema bastante simple. En el lado de ASP.NET, establecer 2 TextBox para
ingresar los valores y un Label para mostrar el total. En adición, necesitaras un Button
para resaltar un evento para el total de los dos valores y agréguelos juntos. Asi mismo, en
ASP.NET usted tiene algo como la siguiente configuración:
<asp:TextBox ID="ScoreA" runat="server"/>
<asp:TextBox ID="ScoreB" runat="server"/>
<asp:Button ID="Calc" onclick="Do_Calc" runat="server"/>
<asp:Label ID="Total" runat="server"/>
Todo lo que el usuario tiene que hacer es ingresar dos valores; La parte C# de la clase
parcial debe utilizar la entrada de valores, hacer las matemáticas y entonces mostrar los
resultados para el Label ASP.NET llamado Total.
En primer lugar, observar la lista C# (menormente innecesaria el estado Using
automáticamente incluido) y entonces considerar como C# primero toma la información y
luego la envía de vuelta a ASP.NET.
using System;
public partial class _Default : System.Web.UI.Page
{
private double s1;
private double s2;
protected void Do_Calc(object sender, EventArgs e)
{
s1 = Convert.ToDouble(ScoreA.Text) * .85;
s2 = Convert.ToDouble(ScoreB.Text) * .15;
Total.Text = Convert.ToString(s1 + s2);
}
}
La primera cosa que se hace en la parte de C# es para declarar dos variables para
manejar la entrada. Ambas variables son escritas como doublé (una intrínseca del tipo
numérico) y establecer con un modificador prívate (Variables con un modificador prívate
son accesibles solo desde el código en la clase cuando estas son declaradas) A
continuación, el código establece un método para la clase que se inicializa por un clic en
el botón.
protected void Do_Calc(object sender, EventArgs e)
Este código utiliza el Do_Calc del evento que maneja la línea de ASP.NET.
<asp:Button ID="Calc" onclick="Do_Calc" runat="server"/>
El resto del método convierte los datos ingresados como cadena a números reales para
ser utilizados en el cálculo. Por ejemplo, la línea C#...
s1 = Convert.ToDouble(ScoreA.Text) * .85;
Tome lo que ha ingresado en el TextBox en la parte de ASP.NET la clase dentro de un
número (un doublé) y asigne los valores para la variable S1. Incluye el texto de la
multiplicación de ASP.NET que tiene que ser convertida a un número de punto flotante (El
tipo doublé en este caso) por 85.
El campo TextBos con el nombre de referencia (ID) de ScoreA originado en la línea…
<asp:TextBox ID="ScoreA" runat="server"/>
En ASP.NET.
Va en la dirección opuesta, para que aparezca el resultado de la multiplicación y adición
para el campo Label (Total), los valores numéricos tienen que ser reconvertidos a texto
como la siguiente línea C# que muestra:
Total.Text = Convert.ToString(s1 + s2);
Asi mismo, en la misma manera que la clase Convert utiliza el método ToDouble para
convertir de una cadena a un número, ToString convierte de nuevo a cadena que puede
ser utilizado en la salida del tipo Label.
Piense de esto como una ida y vuelta a partir de la estructura ASP.NET y el motor C#
para poner en marcha los eventos de usuario o eventos desde algún otro estado en el
programa.
4.5 Estructuras Básicas C#
En esta sección, vamos a mirar las estructuras básicas C# independientemente de
ASP.NET. Entonces en los ejemplos, verá como estas estructuras son utilizadas en
conjunto con ASP.NET en una clase parcial. Sin embargo, por el momento esta sección
se centra en la estructuras C#.
4.5.1 Variables y Constantes
Como implicaba en la sección anterior en este capitulo, una variable es un contenedor,
como estructura utilizada para almacenar datos. Los datos en el cont enedor pueden
cambiar en valor o variar; por lo cual, el término variable.
Como se vio en la discusión anterior, necesita proporcionar variables con un tipo, y no
puede pasar el valor de un tipo de variable a una variable de un tipo diferente de variable.
Por lo tanto, si usted coloca un valor decimal dentro de un tipo de variable decimal,
encontrará de todo para trabajar bien. Más si coloca el valor de una variable dentro de
otra del mismo tipo, su programa trabaja.
Una constante es como una variable en el que sus valores se almacenan, pero a
diferencia de una variable, una constante representa un valor inmutable. Por ejemplo, el
valor de la constante matemática Pi es inmutable, y por colocar este valor dentro de una
constante, usted asegura que algún otro valor no influenciará.
En realidad, cualquier valor puede ser colocado dentro de una constante, ya sea este
absoluta como el valor de Pi o el punto de congelación del agua o algún otro valor que
usted quiera para su programa. Digamos que tiene un programa que verifica por votación
legal edades de 18 que calcula a edades basadas en la fecha actual o fecha de
cumpleaños.
La edad de votación tiene que ser constante, mientras usted espera el cambio de la fecha
actual o fecha de cumpleaños. Entonces, supongamos que la edad de votación cambia de
18 a 21 porque su cálculo se basa en un país diferente. El único valor que debería
necesitar cambiar es la constante que mantiene la edad de votación.
Utilizando constantes y variables del mismo tipo, juntos funcionan bien. Por ejemplo, las
siguientes declaraciones calcularán la multa de valores:
const int VAGE = 18;
int yourAge = 35;
int legalAge;
legalAge = yourAge - VAGE; //Expresión utilizando Variables y Constantes
El aspecto importante de los scripts no es si un elementos es una variable o constante,
pero si los tipos de la variable o contante son los mismos. En este caso, ambas, variables
y constantes son del mismo tipo, int; por lo tanto, trabajan juntos. El siguiente par de script
ilustra como C# y ASP.NET utiliza constantes y variables en armonía.
4.5.2 ASP.NET COnVar
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConVar.aspx.cs"
Inherits="ConVar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Constants and Variables</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="YourAge" runat="server" Text="19" />
</div>
</form>
</body>
</html>
4.5.3 C# ConVar
using System;
public partial class ConVar : System.Web.UI.Page
{
private const int VAGE = 18;
private int yourAge;
private int legalAge;
protected void Page_Load(object sender, EventArgs e)
{
yourAge = Convert.ToInt16(YourAge.Text);
legalAge = yourAge - VAGE;
YourAge.Text = Convert.ToString(legalAge);
}
}
Que script exacto regresa el valor de 1. Esto es porque el objeto Label llamado YourAge
tiene un valor Text de “19” y mientras que una cadena se convertirá en un entero por
parte de la clase de C#. Intente cambiar el valor de 19 a algo relativamente contrario para
la constante del valor de 18. Puede entonces obtener un número negativo.
4.6 Nombres convencionales
Los nombres convencionales son solo convenciones. No son reglas, así su nombre de
selección puede ser único, no siga las convenciones y todo puede funcionar todavía
correctamente. Sin embargo, me parece que un conjunto consistente de convenciones de
nombres es muy útil, y encontrará que una vez que tenga un conjunto estándar, usted y
otros pueden comprender su código mucho mejor.
Uno de los ámbitos cuando las cosas se ponen turbias en convenciones de nombres es
con constantes. En la mayoría de lenguajes, las constantes se han escrito en mayúsculas.
En los ejemplos anteriores, VAGE es un ejemplo de un nombre de constante siguiendo la
convención de utilizar todas en mayúsculas para constantes.
Dependiendo en que articulo de convención lea, y la fecha, encontrará diferentes
convenciones sugeridas para nombres de constantes en C#. Lo siguiente son algunas
diferentes convenciones aplicadas:
4.6.1 Todas en mayúsculas:
Esta convención utiliza todas las letras en mayúsculas. Esto es solo para ser utilizados
por constantes y comandos SQL. Por ejemplo, FREEZEPOINT es un identificador típico
cuando se utiliza constante.
4.6.2 Tipo Camello
También llamado “tipos mixtos” o “Inter tipos”, esta convención de nombres une a las
palabras sin usar espacios o guiones bajos. La primera letra es minúscula, de ahí el
nombre camello por lo de la joroba cuando una letra aparece en mayúscula. Por ejemplo,
firstName es una variable que utiliza tipo camello.
4.6.3 Tipo Pascal
Muy similar al tipo camello, el tipo Pascal comienza con mayúscula y entonces une la
palabra con letras en mayúsculas. Usted encontrará que las clases y funciones
construidas típicamente utilizan el tipo Pascal. Por ejemplo, CustomerList es un ejemplo
del tipo Pascal cuando dos palabras son unidas dentro de una.
Estas convenciones pueden ser de ayuda, y Microsoft intenta ayudar a más asuntos que
ocasionalmente están en papel en blanco. En esta era de convergencia de lenguajes
alrededor de los estándares ECMA, podría querer utilizar convenciones más generales
que son confortables o que comunican más claramente entre un equipo de
desarrolladores.
Algunas convenciones pueden no estar a su gusto y/o no ser usados constantemente. Por
ejemplo, varios desarrolladores prefieren utilizar un subrayado principal para nombres de
variables privadas (Por ejemplo, _apples, o _fruitcake); Sin embargo, los nombres
predeterminados de todas las clases parciales generados por Visual Studio son nombre
de clases que comienzan con un subrayado (esto es, _Default)
Sin embargo en este libro verá que en lugar de utilizar los nombres predeterminados, el
nombre de la clase parcial son más descriptivos y no comienza con un subrayado. La
decisión de no utilizar subrayados para los nombres de clase de una clase parcial está
basado en el hecho que la denominación practica del subrayado principal es arraigado en
algunos programadores como una indicación a una clase privada, método o variable.
4.7 Asignaciones Definitivas
Antes de que una variable pueda ser utilizada, debe ser inicializada de alguna manera.
Por lo que he visto, estas reglas parecen funcionar un poco diferente de un programa puro
de C# y un hibrido único ASP.NET/C#. Generalmente una asignación definida significa
que una variable necesita ser inicializada antes de su uso. En algunos casos, puedes
asignar un tipo de dato tales como…
private string myString;
y entonces usar la variable aunque no se ha asignado su valor. Por ejemplo, suponiendo
que tiene el siguiente script ASP.NET:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DefiniteAssn.aspx.cs"
Inherits="DefAssn" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Definite assignment</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Show" runat="server" />
</div>
</form>
</body>
</html>
Todo este archivo ASPX proporciona un conveniente TextBox para la salida de la variable
que está definida en la parte de C#. La parte de C# es donde puede ver las asignaciones
definidas en el trabajo (o no). En primer lugar, verifique perfectamente si está bien
formada la asignación definitiva para la variable cadena stVar.
using System;
public partial class DefAssn : System.Web.UI.Page
{
private string stVar;
protected void Page_Load(object sender, EventArgs e)
{
stVar = "Test";
Show.Text = stVar;
}
}
Cuando ejecuta, verá el valor Test que aparece en la ventana cuadro de text o. Si comenta
la línea…
//stVar = "Test";
Todo funciona bien. Nada aparece en la ventana cuadro de texto, pero el compilador no
devuelve un error. Sin embargo, si comenta la línea…
//private string stVar;
Y deja en la declaración que proporciona la variable con el valor Test, tendrás un error.
Eso es porque la variable no ha sido declarada. Si declara una variable en C# pero no se
asigna a un valor (se inicializa) antes de ser usado, tendrá un error. Así mismo, mientras
es una practica importante para tener en cuenta, la salida de un formulario ASP.NET es
un poco más que perdonar que un solo programa C# que la salida para
System.Console.WriteLine o algunas estructuras similares que no sean ASP.NET.
4.8 Operadores y Puntuaciones
C# utiliza un completo conjunto de operadores para el estado de relaciones entre los
elementos en expresión. Así mismo, un conjunto de puntuaciones establece
demarcaciones entre diferentes unidades en las declaraciones.
4.9 Operadores Básicos
La mayoría de operadores básicos son aquellos que tratan con asignaciones o bien con
matemáticas. Si usted tiene experiencia con otros lenguajes de programación, puede ser
pasar por alto que los operadores pueden diferir por diferentes lenguajes. C# no es
diferente. Algunos de los operadores que está acostumbrado a usar pueden ser idénticos
en C#, pero algunos pueden ser diferentes; así que preste mucha atención.
4.9.1 Operadores de asignación
Los operadores de asignación son los más utilizados y muy sencillos. Representados por
un sencillo signo “igual” (=), los operadores de asignación son utilizados para asignar un
valor a los elementos del programa, que incluye propiedades, variables y constantes. La
estructura básica es la siguiente:
someProperty (operand) = (assignment variable) someValue (operator)
Como lo ha visto aquí y en capítulos anteriores, los valores que pueden ser asignados a
una variable dependen del tipo, pero por lo demás, el uso de los operadores de
asignación son bastante simples y estandarizados. Lo siguiente es una expresión que
muestra una típica asignación:
string myString = "A string of pearls";
En algunos casos se puede querer más de una propiedades para ser asignada con el
mismo valor. Por ejemplo, lo siguiente asigna la propiedad horizontal y vertical para el
mismo valor:
objHorizontal = objVertical = 55;
Usando cadenas de asignaciones puede ahorrar tiempo e incluso ayudar a organizar sus
asignaciones.
4.9.2 Operadores Matemáticos
Los operadores matemáticos hacen bastante más de lo que esperaba, suman, restan y
realizan otras operaciones matemáticas. La única excepción es añadir el signo (+). Si las
variables son números o literales, añadir el sino suma una o más valores. Al igual que los
operadores de asignación, puede tener múltiples operadores en una expresión. Si los
elementos con los que trabaja son cadenas, entonces añada el signo de concatenación.
Por ejemplo, lo siguiente mostrará como añadir un símbolo en una expresión que daría
lugar a una concatenación:
private string morning = "Good morning ";
private string night = "Good night";
private string allDay = morning + night;
//results Good morning Good night
Símbolo
+
*
/
%
++
-Operadores
compuestos
+=
-=
*=
/=
%=
Descripción
Adición (también concatena cadenas)
Substracción
Multiplica
Divide
Modulo o Residuo (Números enteros que quedan en una división)
Incrementa por uno, puede ser pre o post incremento.
Disminuye por uno, puede ser pre o post disminución.
Toma el valor
Toma el valor
Toma el valor
Toma el valor
Toma el valor
actual y suma el valor asignado
actual y hace una resta del valor asignado
actual y lo multiplica por el valor asignado
actual y lo divide por el valor asignado
actual y realiza el residuo del valor asignado
El incremento y disminución de los operadores se encuentran comúnmente en las
estructuras de bucle (descritos mas adelante en este capitulo). Se usan para sumar o
restar automáticamente 1 del valor actual de la variable.
Los operadores compuestos son una combinación de operadores matemáticos y los
operadores de asignación. Son utilizadas automáticamente para tomar el valor de la
variable y entonces, hacen las matemáticas en relación con el valor de la variable. Por
ejemplo, lo siguiente muestra como un operador compuesto podría ser utilizado para
añadir un 8 porciento de impuesto para un elemento:
using System;
public partial class CompoundOp : System.Web.UI.Page
{
private decimal cost;
private decimal tax;
protected void Page_Load(object sender, EventArgs e)
{
cost = 29.95m;
tax = .08m;
cost += (cost *= tax);
Total.Text = Convert.ToString(cost);
}
}
La variable costo utiliza un operador compuesto de adición para agregar en si mismo el
valor de los costos multiplicado por la variable impuesto utilizando un operador compuesto
de multiplicación.
4.10 Pregunte a los expertos
¿Qué hace los caracteres m en los literales para los valores de costo e impuesto?
Cuanto asigna valores literales a un decimal del variable o constante, tiene para añadir el
carácter m para distinguir los valores integer, doublé o algunos otros tipos no decimales.
Note, sin embargo, que las variables que contienen valores decimales no necesitan incluir
m.
4.11 Operadores de relación
Cuando dos o más elementos en una expresión están comparados, los operadores
relacionales Booleanos generan valores True o False. EN general, los valores del mismo
tipo son evaluados como iguales el uno del otro o de algún modo, diferentes. La siguiente
tabla muestra los principales operadores relacionales y una breve descripción de lo que
hacen.
Los operadores relacionales son utilizados ampliamente con declaraciones condicionales
dentro y fuera de los bucles. Pueden ser utilizada para establecer el valor Booleanos de
las contantes o variables. Lo importante para recordar es que los operadores relacionales
always evalúan true o false. Considere el siguiente código:
int first = 10;
int second = 20;
bool same;
same= (first == second);
//same resolves to false
Simbolo
==
!=
>
<
>=
<=
Descripcion
Igual a
No es igual
Mayor que
Menor que
Mayor o igual que
Menor o igual que
Básicamente el script le pregunta si 10 y 10 son iguales, y porque no , la variable
Booleana, same, se evalúa como false. Más adelante en este capitulo, verá como el
resultado Booleano son utilizados en declaraciones condicionales para el control de
estructuras condicionales y bucles.
4.12 Comparación de cadenas
En algunos lenguajes, puedes comparar cadenas utilizando los mismos operadores para
comparar valores numéricos. si lo intenta en C#, caerá rápidamente en la ejecución de un
error. Para comparaciones de cadenas, use la clase String y el método Compare. El
método Compare utiliza el siguiente formato:
int numVal = String.Compare(String1, String2);
Al evaluar si una cadena es superior o no, utilice el método String.Compare() para colocar
la primera letra en la cadena con respecto a su posición en el alfabeto. Si la letra es
anterior a otra letra, entonces se considera Menor que. Asi mismo, la letra a es menor que
la letra b y le resta del alfabeto. Tambien, una letra minúscula es menor que su homologo
en mayúscula. Sin embargo, si una letra en minúscula es superior en el alfabeto que una
en mayúscula, se resuelve por el mayor. Por otra parte, la misma letra en diferentes casos
no son iguales. Solo las letras del mismo caso y valor son considerados iguales.
La siguiente tabla muestra 3 resultados y su significado:
Resultado
-1
1
0
Significado
La segunda cadenas es superior que la primera cadena.
La primera cadena es superior que la segunda cadena.
Ambos son iguales
Como puede ver, este tipo de resultado relacional utilizando el método String.Compare()
es muy diferente del resultado Booleano encontrado cuando compara números.
4.13 Operadores lógicos
Al respecto de muchos operadores lógicos que son similares a los operadores
relacionales porque estos también tienen resoluciones Booleanas. La siguiente tabla
muestra 3 operadores lógicos usados en C#.
Resultado
&&
||
!
Descripción
Lógico AND
Lógico OR
Lógico NOT
Al igual que ocurre con los operadores relacionales, usted encontrará operadores lógicos
usados en una buena cantidad de declaraciones condicionales. Estos son esenciales
cuando se quiere probar más que una sola condición. Por ejemplo, si quiere planear un
viaje en skí, quizá quiera saber si la temperatura es lo suficientemente fría para mantener
la nieve y si la nieve está realmente sobre la tierra. Por lo tanto podría tener un código
muy parecido a lo siguiente:
bool temp = true;
bool snow = true;
bool both = (temp && snow);
//both resolves to true
Si solo quería que uno u otro sea verdadero, puede utilizar la declaración:
bool either = (temp || snow);
En su mayor parte, será utilizando los tipos de los operadores básicos que fueron
discutidos en esta sección. C# también tiene operadores bitwise (bit a bit) que es poco
probable que se utilice a menos que esté familiarizado con matemáticas binarias.
4.14 Símbolos en gramática y apuntadores
Los símbolos de gramática y apuntadores son similares a los que se encuentran en otros
modernos lenguajes de computadoras. La siguiente tabla muestra los ´principales
símbolos no utilizados como operadores y como se utilizan en C#.
Símbolo
;
,
{}
[]
()
//
/* … */
:
Descripción
Terminador de una declaración; también elemento delimitador de la
declaración for
Elemento separador de arrays
Abrir o cerrar declaraciones condicionales, bucles, funciones y clases
Elemento delimitador de array
Parámetros delimitadores
Líneas simples para comentarios
Bloque de comentarios
Delimitadores de caso en declaraciones switch. También utilizados en
declaraciones de clase heredadas de una súper clase.
La mayor parte de gramáticas y puntuaciones se entienden mejor en el contexto de su
uso, incluso cuando se utiliza un listado parcial de todos los símbolos gramaticales y
puntuaciones como en la tabla anterior. Cuando se piensa en diferentes estructuras en
C#, note como estos símbolos son empleados correctamente.
4.15 Declaraciones condicionales
Al ver los diferentes operadores, puede ver que la mayor parte de los resultados, cuando
las comparaciones se hacen, van a ser booleanas. Esencialmente, una declaración
condicional utiliza un Booleano para tomar un camino u otro. A menudo, las condiciones
no son mas que hacer algo o no hacer algo. Sin embargo, en otros momentos una
declaración condicional necesita elegir entre una u otra rama
4.15.1 If y Else
La mayoría de declaraciones condicionales básicas es la declaración if. Este formato es el
siguiente:
if(condition)
{
//do something
}
La condición es una expresión usando un operador relacional tales como varA > varB o
Booleano. Por ejemplo, lo siguiente utiliza un Booleano para determinar si Mary más joven
que Juan.
int Mary = 20;
int Juan = 21;
bool compare = (Mary < Juan);
if(compare)
{
//output Mary es más joven que Juan
}
Con una singular condición de prueba, puede estructurar dos resultados específicos
utilizando la declaración else en el siguiente formato:
if(condition)
{
//take path A
}
else
{
//take path B
}
El siguiente ejemplo utiliza dos cuadros de texto ASP.NET, y en función a los resultados,
en la parte C# el script utiliza una declaración if/else determinando cual de los dos valores
es mayor.
4.15.2 ASP.NET# SimpleIf
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SimpleIf.aspx.cs"
Inherits="SimpleIf" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Simple Conditional</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"/>
Number 1
<p/>
<asp:TextBox ID="TextBox2" runat="server"/>
Number 2
<p/>
<asp:Button ID="Compare" runat="server"
Text="Compare" onclick="DoCompare" />
<p/>
</div>
</form>
</body>
</html>
4.15.3 C# SimpleIf
using System;
public partial class SimpleIf : System.Web.UI.Page
{
private int n1;
private int n2;
protected void DoCompare(object sender, EventArgs e)
{
n1 = Convert.ToInt16(TextBox1.Text);
n2 = Convert.ToInt16(TextBox2.Text);
if (n1 > n2)
{
TextBox1.Text = n1 + " is greater";
}
else
{
TextBox2.Text = n2 + " is greater";
}
}
}
Cuando prueba el script, ingrese dos diferentes valores enteros; el cual muestra a uno
como mayor, tal como la siguiente imagen.
Figura 4. 1
Para manejar una sola condición, puede utilizar una serie de if o else if las declaraciones
utilizan el siguiente formato.
if(conditionA)
{
//do A
}
else if (conditionB)
{
//do B
}
Cuando se enfrenta a mas de una sola condición a resolver, la declaración else if hace un
truco. Esto puede tener una pequeña confusión cuando tiene varios resultados
alternativos para evaluar.
4.16 Switch
Cuando tienen varios diferentes resultados, else if se vuelve algo engorros, pero trabaja
bien. Una mejor alternativa que else if es la declaración switch, el cual puede manejar
cualquier números de valores condicionales. La declaración switch toma el valor de una
sola variable y entonces, examinar varios diferentes casos para decidir cual utilizar. Gran
parte de declaración switch también contienen una declaración break al final para que se
encuentren casos coincidentes, la búsqueda se detienen inmediatamente. La declaración
switch tiene el siguiente formato general:
switch (someVar)
{
case value1:
//do action A
break;
case value2:
//do action B
break;
}
La declaración switch le permite tratar fácilmente con varios valores condicionales. En
función al valor del caso, puede tener su programa tomando un amplio rango de acciones
deseadas. Le resulta útil cuando necesita tener más que un simple o solo unas pocas
opciones disponibles para iniciar.
Uno uso al que usted puede colocar la declaración switch está en clasificar los resultados
generados por el valor String.Compare que se muestra en la tabla del titulo Comparación
de cadenas (en este capitulo) Cada de tres posibles valores que el método
String.Compare genera es tratado como casos separados. Asi mismo los casos podrían
ser…
case 1:
case -1:
case 0:
En función a los casos que generen sus scripts, las acciones tienen al programa haciendo
cosas diferentes. La siguiente aplicación SwitchCom proporciona un ejemplo de cómo
aplicar la declaración switch.
4.16.1 ASP.NET SwitchCom
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SwitchCom.aspx.cs"
Inherits="SwitchCompare" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Switch Compare Strings</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"/>
 Enter first string</div>
<p/>
<asp:TextBox ID="TextBox2" runat="server"/>
Enter second string
<p/>
<asp:Button ID="Compare"
runat="server"
Text="Compare Strings"
onclick="DoCompare"
/>
<p/>
<asp:Label ID="Output" runat="server" Text="Results" />
</form>
</body>
</html>
4.16.2 C# SwitchCom
using System;
public partial class SwitchCompare : System.Web.UI.Page
{
private int n1;
protected void DoCompare(object sender, EventArgs e)
{
//In using String.Compare the following outcomes
//are possible:
//-1 means that the first string is less than the second
//1 means that the second string is less than the first
//0 means the values are equal
n1 = String.Compare(TextBox1.Text, TextBox2.Text);
switch (n1)
{
case -1:
Output.Text = TextBox1.Text + " is less than " +
TextBox2.Text;
break;
case 1:
Output.Text = TextBox2.Text + " is less than " +
TextBox1.Text;
break;
case 0:
Output.Text = "The two strings are identical";
break;
}
}
}
La siguiente imagen muestra que dos cadenas con el mismo caso son resuelto como
idénticas.
Figura 4. 2
SIm embargo, la salida en la siguiente imagen indica que las primeras cadenas son
menores que la segunda cadena. Note que la sola diferencia entre los dos es que las
primeras cadenas son todas en minúscula y la segunda cadena tiene un solo carácter en
mayúscula.
Figura 4. 3
En el ejemplo, puede ver exactamente como va en el método String.Compare y utilizarlas
mejor en sus propias aplicaciones.
4.17 Pregunte a los expertos
En el ejemplo anterior, no ocurre nada si los números son iguales. ¿Como tratar
con valores que son iguales?
Si solo utiliza una condición, utilice el operador mayor o igual que, la condición de
igualdad pueda ser incluida.
4.18 Bucles
Los bucles generan acciones repetidas hasta que alguna condición se cumpla. Como la
mayoría de lenguajes, C# posee diferentes tipos de bucles, dependiendo en la situación
en la que se encuentre. Cada bucle completo es llamado Iteracion, y los bucles pueden
tener como muchas o como pocas iteraciones como necesite. Sin embargo, usted debe
ser cuidadoso al tener algunos tipos de condiciones que dará por terminado el buble.
Diferentes tipos de bucles tienen diferentes formas de crear las terminaciones de
condición, y en la siguiente subseccion, verá los bucles primarios que utilizará en C#.
4.18.1 For Loop
Cuando usted quiera completar un número especifico de iteración en un bucle, For loop
tiene una simple estructura.
for (loop variable initial; termination condition; change loop variable)
{
//statements
}
Generalmente, usted verá el inicio del bucle con una variable entera, seguido por una
declaración de terminación utilizando un operador relacional, y terminado por un
incremento o decremento de la variable. Por ejemplo, el siguiente bucle establece el
principio del valor de la variable de bucle a 0 y los controles para ver que el tiempo sea
menor a 12, las iteraciones continuan.
for (int loopvar = 0; loopvar < 12; loopvar++)
En este caso, se tiene la iteración 12 con el valor loopvar de 0 – 11. Para ver un uso
visual del bucle For, la siguiente aplicación ilustra como la variable de bucle cambia con
cada iteración.
4.18.2 ASP:NET Loop.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Loop.aspx.cs"
Inherits="LoopTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>For Loop</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Output"
runat="server"
Width="450"
Height="30" />
</div>
</form>
</body>
</html>
4.18.3 C# Loop.aspx.cs
using System;
public partial class LoopTest : System.Web.UI.Page
{
private int loopcount;
protected void Page_Load(object sender, EventArgs e)
{
for (loopcount = 0; loopcount < 25; loopcount++)
{
Output.Text += loopcount + "-";
}
Output.Text += "End of loop";
}
}
Cuando usted prueba esta aplicación, verá una larga y estrecha caja de texto con los
valores desde 0 a 24 y entonces el mensaje de que el final del bucle se ha alcanzado. La
clave en la línea de bucle es el siguiente:
for (loopcount = 0; loopcount < 25; loopcount++)
La variable entera loppcount inicia en 0, y cada momento a través del bucle, la
declaración de controles ve si loopcount es menor que 25. Si es asi, entonces uno es
agregado a la variable loopcount (loopcount++) y se ejecuta el bucle otra vez. La siguiente
figura muestra los resultados que puede esperar ver.
Figura 4. 4
Usted puede realizar la misma acción con cada iteración, o puede usar la variable de bucl
para generar diferentes resultados.
4.18.4 Foreach Loop
El bucle foreach es un de mis favoritos porque puedes recorre un objeto con una incógnita
y/o cambiar la colección de elementos. Por ejemplo, un objeto array contiene cualquier
numero de elementos de tipos específicos.
Utilizando el bucle foreach, usted proporciona una variable escrita que quiera para la
salida del objeto, y el bucle itera a través del objeto hasta que se recogen todos los
elementos y hace disposición de usted.
foreach (type myLoopVar in myObject)
{
//do something
//myLoopVar is treated as a
//standard variable
}
El poder de las características de estos tipos de bucles es la capacidad para analizar las
propiedades de un objeto y enviarlas a cabo hasta que el objeto esté vacio. Tipicamente,
encontrará que estos tipos de bucles se utilizan con un objeto array, y el siguiente objeto
utiliza un array de cadena para ilustrar su uso. Por lo tanto, en un bucle for, necesita
escribir la variable de iteración, pero no en un bucle foreach.
4.19 Pregunte a los expertos
En el ejemplo la variable de bucle es inicializada como una variable privada fuera
del bucle de declaración ¿Por qué es eso?
Esto es mas un asunto de estilo que de cualquier convención o necesidad. Me gusta
recoger todas mis variables y ponerlas en un solo lugar. Entonces cuando yo puse el
bucle, no tuve que ingresar el tipo, reduciendo el desorden. El único problema con ese
estilo es que cuando tienen varios diferentes bucles y desea guardar cada local y reutilizar
su bucle favorito nombre de variable, puede ocasionar conflicto.
4.20 ASP.NET ForEach.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ForEach.aspx.cs"
Inherits="ForEach" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Foreach</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Output"
height="100"
runat="server"
TextMode="MultiLine" />
</div>
</form>
</body>
</html>
4.21 C# ForEach.aspx.cs
using System;
public partial class ForEach : System.Web.UI.Page
{
private string[] myArray;
protected void Page_Load(object sender, EventArgs e)
{
myArray = new string[5];
myArray[0] = "More memory";
myArray[1] = "Sound card";
myArray[2] = "Monitor";
myArray[3] = "Terabytes drive";
myArray[4] = "Faster processor";
foreach (string s in myArray)
{
Output.Text += s + "\n";
}
}
}
Como puede ver en el resultado, el bucle foreach marcha verdaderamente a través del
array y sacadas todas las cadenas y puestas en un campo TextBox. Tambien note la
parte ASP.NET de la aplicación donde la propiedad TextMode es ajustado a “MultiLine”,
Estas configuraciones permiten la salida para ser colocados en líneas separadas coomo
lo muestra la siguiente figura.
Figura 4. 5
Mantener el bucle foreach en mente para excavar a través de un conjunto de datos que se
ha enviado a un array. Generalmente, los diferentes controles en ASP.NET pueden hacer
un buen trabajo de tratar con datos mostrados desde una base de datos, pero para ciertos
tipos de análisis de datos, usted se alegrará conocer como trabajar con el bucle foreach.
4.22 While Loop
El bucle While Loop tiene dos diferentes implementaciones. La primera es como un bucle
que verifica la condición en la parte superior del bucle.
4.22.1 ASP.NET While LoopWhile.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoopWhile.aspx.cs"
Inherits="WhileLoop" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>While Loop</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Output"
runat="server"
Width="450"
Height="30" />
</div>
</form>
</body>
</html>
4.22.2 C# LoopWhile.aspx.cs
using System;
public partial class WhileLoop : System.Web.UI.Page
{
private int loopcount;
protected void Page_Load(object sender, EventArgs e)
{
loopcount = 25;
while (loopcount > 0)
{
Output.Text += loopcount + "-";
loopcount--;
}
Output.Text += "End of Loop";
}
}
Este bucle tiene la condición directamente al principio. Si la variable loopcount es o o
menor, No iterar a través del bucle de una sola vez, pero se dirigirá inmediatamente al
mensaje End of Loop (Fin del bucle). Sin embargo, porque elvariable contador se
establece en 25, esto toma 25 iteraciones antes de la variable 0. La siguiente imagen
muestra lo que verá cuenta atrás.
Figura 4. 6
La característica importante para tener en mente cuando utiliza el bucle While es que no
debe iterar todo si la condición se resuelve en falso en el primer intento a través del
bucle. La siguiente sección muestra un bucle similar pero con una importante diferencia.
4.23 Do Loop
En algunas ocasiones, necesita un bucle que iterará al menos una vez, y esto es cuando
el bucle do while (o solo do) se encuentra útil. La condición para verificar la terminación es
en la parte inferior del bucle, mientras las acciones para el bucle están en la parte
superior. Este tiene la estructura:
do
{
//Loop actions
}
while (condition);
Como usted puede ver, las acciones ocurren antes de la condición while que evalúa un
valor Booleano. Asi mismo cuando desea tomar algunos tipos de acciones, incluso si el
valor Booleano resuelve como false al primer intento a través del bucle, use el bucle do. El
siguiente ejemplo ilustra como trabajar.
4.23.1 ASP.NET DoWhile.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DoWhile.aspx.cs"
Inherits="DoWhile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Do Loop</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Output"
runat="server"
Width="450"
Height="30" />
</div>
</form>
</body>
</html>
4.23.2 C# Do DoWhile.aspx.cs
using System;
public partial class DoWhile : System.Web.UI.Page
{
private int loopcount;
protected void Page_Load(object sender, EventArgs e)
{
do
{
Output.Text += loopcount + "-";
loopcount++;
}
while (loopcount < 25);
Output.Text += "Loop Ends";
}
}
Cuando prueba el programa, verá el resultado en la siguiente imagen.
Figura 4. 7
Esto se parece a los otros, pero tiene un significado diferente. El valor en la primera
iteración es 0, el valor predeterminado de un tipo entero inicializado. Esto ocurre porque la
variable loopcount no incrementa hasta después de que los valores se colocan en el
cuadro de texto. Por lo tanto, no importa que, en la primera iteración se pondrá un valor
en la variable iteración, incluso si este excede del valor condicional. Eso es, si la variable
loopcount era establecido inicialmente en 75, podría seguir apareciendo en la salida del
cuadro de texto porque el bucle do while itera siempre al menos una vez.
Básicamente, las diferencias entre do while y el bucle while es la condicional Booleana
siendo el inicio o el fin del bucle. Para todos los propósitos prácticos significan que sus
aplicaciones, necesitan iterar al menos una vez o ninguna en absoluto.
4.24 Arrays
Los arrays son estructuras de datos que contienen múltiples elementos. Cada elemento
de un array es el mismo objeto o variable con valores. Cada uno de los valores en cada
elemento de una array deben ser del mismo tipo. Por ejemplo, un array tipo entero puede
solo contener enteros, y un array tipo cadena colo pueden contener cadenas.
A modo de orientación, los arrays en C# en realidad vienen en mas que un sabro incluidos
los simples arrays que serán discutidos aquí. Sin embaroc, C# también tiene ArrayLists y
Stacks que tienen características familiares para el uso de arays en otros lenguajes dem
programación.
Por ejemplo, los métodos push() y pop() son utilizados en arrays en otros lenguajes para
añadir o quitar elementos desde los arrays. Usted no encontrará estos métodos en un
array estándar C#, pero encontrará ambos métodos en la clase Stack. Asi mismo, si usted
está familiarizado con arrays desde otros lenguajes de programación, está seguro de
comprender el concepto general de array, pero debido a la precisa forma en que son
usados en C#, usted podría querer prestar mucha atención en esta discusión.
4.24.1 Creando Arrays
Usted puede utilizar diferentes métodos para una instancia de un array. Del mismo modo,
asignando valoras a los arrays se pueden hacer de diferentes maneras. Probablementes
la mejor manera para pensar acerca de la creación de arrays es imaginar una pila de
cuadros de seguridad. Cada cuadro es considerado un elemento array, y la pila es el
mismo array. Ademas, necesita especificar el número de cuadros necesarios y el tipo de
contenido de cada cuadro que llevará a cabo. Por ejemplo, una pila de cuadoros pueden
mantener solo Joyas y otra pila mantener solo Monedas. Sin embargo, la pila con la
sjoyas no pueden mantener monedas y viceversa. Con esto en mente, echemos un
vistazo como una array puede ser una instancia.
La forma general para la declaración de un array es como lo siguiente:
type[] arrayLabel;
Por ejemplo, lo siguiente crea un array de cadena nombrado stringSlots:
string[] stringSlots;
A diferencia de una variable, los arrays necesitan algunos tipos de indicaciones de cómo
muchos elementos residirán, asi mismo cuando estos son instancias, necesita indicar el
tamaño que es. Lo siguiente crea un array con 44 elementos disponible para los datos:
stringSlots = new string[44];
Cuando los valores no son asignados a una array de cadena, cada uno tiene un valor
nulo. El array entero por defecto es 0. Sin embargo, puede asignar valores a elementos
de array en inicialización. Por ejemplo, los siguientes dos ejemplos asignan 3 valores de
elementos a un array de cadena:
string[] stringSlots = new string[3] { "apples" , "oranges" , "pears" };
string[] stringSlots = { "apples" , "oranges" , "pears" };
La primera inicialización requiere un paso extra, asi mismo la mayoría de desarrolladores
utilizan lo segundo. La longitud del array es implícita por tres elementos que son los
valores entre llaves( { } ).
Si usted no conoce lo que los valores van a ser, puede asignar valores para una directa
referencia a un índice array después el array tienen que ser inicializado. Por ejemplo, la
siguiente secuencia muestra un array de cadena que es declarada, inicializada y tienen
datos añadidos para especificar elementos:
string[] stringSlots; //declared
stringSlots = new string[44]; //initialized
stringSlots[28] = "Nancy"; //value added to element 28
stringSlots[43] = "Joe"; //value added to element 43
Como vio en el ejemplo foreach en el listado de código C# (ForEach.aspx.cs), las
herramientas son disponibles por los bucles a través de los elementos de array ambos
para añadir y recuperar datos.
Nota: Los elementos arrays son índices de base cero. Así mismo, el primer elemento es
0, y la ultima longitud array es menos 1. Asi con una longitud de 44, el último valor del
índice para el array seria 43. Por lo tanto la declaración…
stringSlots[43] = "Joe";
seria el elemento número más alto en el array stringSlots.
Metodos Array
Los arrays se ven y actúan como una gran cantidad de tipos incorporados, y en su mayor
parte, es como son tratados. Sin embargo, Estos son, en realidad un objeto de
System.Array, el cual tiene el conjunto de métodos y una sola propiedad que puede ser
utilizado con el array simple. La siguiente tabla muestra un ejemplo de los métodos
System.Array disponibles y como son utilizad los métodos System.Array disponibles y
como son utilizados.
Método
AsReadOnly
BinarySearch
Clear
ConvertAll
Copy
CopyTo
CreateInstance
Find
Uso
Devuelve una capa de sólo lectura para el conjunto especificado.
Busca algoritmos binarios utilizados para encontrar elementos.
Restablece todos los elementos en 0 o nulo.
El tipo de array es cambiado (por ejemplo, convierte tipo entero a
cadena.
Copia rango de elementos desde un array a otro.
Como el método Copy(), pero copia todos los elementos.
Nueva instancia de clase inicializada Array.
Metodo de búsqueda para encontrar elementos que coincidadn
con los criterios de búsqueda. Encuentra primera instancia.
FindAll
GetType
GetValue
IndexOf
LastIndexOf
Resize
Reverse
SetValue
Sort
Como Find(), exepto que encuentra todos los elementos.
Se utiliza para obtener el tipo de instancia actual.
Se utiliza para obtener el elemento valor de array.
Es un array unidimensional devuelve el índice de la primera
ocurrencia de valor.
Es un array unidimensional devuelve el índice de la ultima
ocurrencia de valor.
Cambia el tamaño de un array para especificar un nuevo tamaño
Invierte el orden de los elementos en un array.
Establece un valor para un determinado elemento en un array.
Todos los elementos de arrays ordenados.
4.24.2 Propiedad Length en un Array
La única propiedad en un System.Array es length. La longitud de un array se refiere al
número de elementos que posiblemente puedan contener, pero en general se refiere al
número real de elementos en un array. Tenga en cuenta que los elementos de array son
basados en cero, significa que el primer elemento es 0. Por ejemplo, un array con tres
elementos seria tener lo siguiente:
myArray[0] = "First"
myArray[1] = "Second"
myArray[2] = "Third"
La longitud se basa en uno. Por lo tanto mientras un elemento puede ser referenciado
como 0, este es el primero de cualquier número de elementos en el array.
4.24.3 Utilizando Arrays
Ahora que ha visto los principales elementos de array, sus métodos y propiedades, este
siguiente ejemplo ilustra su utilización en una aplicación. El propósito es tomar un simple
ejemplo con ambos arrays, numérico y cadena y añadir métodos claves para mostrar
como trabaja con el. Note en particular como los métodos de array son utilizados. El
formato…
Array.Method(stringLabel)
Ayuda a recordar que los arrays simples son realmente parate de la clase System.Array
más que una característica incorporada independiente de la clase System.Array. Vea los
métodos Reverse() y Sort() en la parte de C# del siguiente ejemplo.
4.24.4 ASP.NET ArrayTest.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ArrayTest.aspx.cs"
Inherits="ArrayTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Output"
runat="server"
TextMode="MultiLine"
Height="170"
Width="180" />
</div>
</form>
</body>
</html>
4.24.5 C# ArrayTest.aspx.cs
using System;
public partial class ArrayTest : System.Web.UI.Page
{
string[] stringBox = { "Esperanza", "Caridad", "Paz", "Prudencia" };
int[] integerBox = new int[3] { 1944, 1492, 711 };
protected void Page_Load(object sender, EventArgs e)
{
Array.Sort(stringBox);
Array.Reverse(integerBox);
Output.Text += stringBox[0] + "\n";
Output.Text += stringBox[1] + "\n";
Output.Text += stringBox[2] + "\n";
Output.Text += stringBox[3] + "\n";
Output.Text += integerBox[0] + "\n";
Output.Text += integerBox[1] + "\n";
Output.Text += integerBox[2] + "\n";
Output.Text += stringBox.Length + "=String Array size\n";
Output.Text += integerBox.Length + "=Integer Array size\n";
}
}
Cuando ejecute el ejemplo, la siguiente imagen muestra lo que verá en pantalla.
Figura 4. 8
El método Sort() cambia el orden de los valores de los elementos de array de:
Esperanza (Hope)
Caridad (Charity)
Paz (Peace)
Prudencia (Prudence)
Para la salida en orden alfabético que ve en la imagen líneas arriba. Sin embargo, el
método Reverse() invierte el orden de los tres enteros “1944, 1492, 711” a “711, 1492,
1944”
La longitud de dos arrays mostrados en la salida de la imagen líneas arriba, es basado en
los valores en la iniciación array en el ejemplo. Cada elemento se le da un valor en ambos
arrays.
Sin embargo, si usted inicializa unu array con 250 y no asigna un solo valor a cualquiera
de los elementos, asigne valores a algunos ele,emtos y no a otros, o asigne 250 valores
para 250 elementos, la longitud del array debería ser el mismo. Eso es, la longitud del
array es basado en el numero de reserva de ranuras y no si cada ranura tiene un valor
real no predeterminado.
Capitulo 5: Hacer más con C# y
ASP.NET
Como necesita solo un poco de C# para trabajar con éxito con ASP.NET, no significa que
no pueda utilizar todo el potencial de C# con sus aplicaciones ASP.NET. Este capitulo se
profundiza un poco más allá en los eventos que pueden ser generados por diferentes
herramientas ASP.NET y manejados por C#, y también muestra como acceder a clases
completas C# desde una clase parcial formado por C# y ASP.NET. Sin embargo, ninguno
de los capítulos anteriores ni siquiera este capitulo, hacen más que tocar la superficie de
lo que puede hacer con C#. Para aprender más acerca de C#, necesita leer otro libro.
5.1 Eventos y manipulación
En el capitulo anterior, usted ha visto un par de diferentes formas en que se manejan
eventos C# conectados a formularios ASP.NET, también en la carga de una pagina o un
botón de formulario. Sin embargo, diferentes objetos ASP.NET generan diferentes tipos
de eventos, y en esta sección examinará como se hacen y proporcionan algunos ejemplos
aparte de los que ha visto.
5.2 Añadiendo eventos de controles ASP.NET a C#
Utilizando Microsoft Visual Studio 2008 le permite añadir eventos manejados ASP.NET a
códigos C# de manera muy sencilla. Irónicamente, en lugar de generar código C# desde
el modo Código de ASP.NET, deberá hacerlos desde el modo Diseño. El siguiente
ejemplo muestra como generar eventos manejados C# utilizando los siguientes pasos:
1° Abrir Visual Studio 2008.
2° Crear un nuevo Sitio Web y guardar su aplicación en una carpeta de nombre
EventWork.
3° Pulse clic en la vista Diseño.
4° Desde el cuadro de herramientas, arrastre un TextBox.
Figura 5. 1
5° Debajo del TextBox, arrastre un Button.
6° Debajo del Button, arrastre un ListBox.
7° Inserte un control Label debajo del Cuadro de texto (TextBox).
8° En el panel de Propiedades, en la propiedad Text, escribe: Cuadro de texto.
9° Inserte dos etiquetas más debajo de cada control, y añada una etiqueta de texto como
lo muestra la siguiente imagen:
Figura 5. 2
10° Pulse clic en el control ListBox, al lado derecho del control ListBox aparece una flecha
apuntando a la derecha, pulse clic en la flecha y aparece el menú Tareas de ListBox.
Figura 5. 3
11° Clic en Editar elementos.
12° En el cuadro de diálogo Editor de la colección ListItem, pulse clic en el botón Agregar.
Figura 5. 4
13° Pulse clic en Agregar dos veces para insertar dos elementos más. Ahora tendremos 3
elementos agregados.
Figura 5. 5
14° EN la columna Miembros, pulse clic en ListItem del índice 0 (cero).
15° En la columna Propiedades de Item1, pulse clic en la propiedad Text y escribe:
Elemento1.
16° En la propiedad Value escribe: Item1.
17° Seleccione ListItem del índice 1 de la columna Miembros, y cambien la propiedad Text
por Elemento2 y Value por Item2.
18° Seleccione ListItem del índice 2 de la columna Miembros, y cambien la propiedad Text
por Elemento3 y Value por Item3.
19° Pulse clic en Aceptar.
Figura 5. 6
Observe como se va mostrando el diseño de la página.
Figura 5. 7
20° Pulse doble clic sobre el control TextBox. Al hacerlo, usted será trasladado dentro del
editor C# y verá el siguiente código generado:
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
Para la inserción de código entre las llaves, puede atar el código a un evento en el
TextBox que inicia el código cuando el texto en el cuadro es cambiado y pulse Enter.
21° Pulse doble clic sobre los controles ListBox y Button para generar sus códigos
respectivos.
Figura 5. 8
Además de cargar la pagina de evento, su código C# podría incluir 3 eventos manejados
más, una por cada BUtton, TextBox y ListBox.
5.3 Añadiendo declaraciones para el manejo de eventos
Sin nuestra participación en la hyperbole, la gran mayoría de código de eventos C# se
estaría haciendo con ASP.NET incluyendo la adición de declaraciones para los eventos
generados de la forma que se acaba de describir. Dependiendo de la naturaleza del
proyecto, usted tendría diferentes declaraciones. En el siguiente ejemplo, usted puede ver
diferentes tipos de declaraciones C# y estructuras que puede que quiera agregar.
5.4 ASP.NET EventWork.aspx
<%@ Page Language="C#"
Inherits="_Default" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Event Work</title>
<style type="text/css">
.abGrey
{
font-family: "Arial Blackadder ITC";
color: #555555;
}
.grey
{
color: #555555;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
CodeFile="Default.aspx.cs"
1.0
Transitional//EN"
<asp:TextBox
ID="TextBox1"
runat="server"
ontextchanged="TextBox1_TextChanged" CssClass="grey" AutoPostBack="true" />
<br />
<span class="abGrey">Cuadro de texto</span>
<p />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Clic aquí" />
<br />
<span class="abGrey">Botón de comando</span>
<p />
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true" Height="80px"
onselectedindexchanged="ListBox1_SelectedIndexChanged" Width="80px">
<asp:ListItem Value="Item1">Item1</asp:ListItem>
<asp:ListItem Value="Item2">Item2</asp:ListItem>
<asp:ListItem Value="Item3">Item3</asp:ListItem>
</asp:ListBox>
<br />
<span class="abGrey">Cuadro de Lista</span>
</div>
</form>
</body>
</html>
Nota: Para controlar el estilo de las aplicaciones ASP.NET, puedes agregar CSS tal y
como lo haría en HTML o XHTML. Las dos clases CSS añadidas en el archivo
EventWork.aspx simplemente ilustran como añadir código CSS. Esto incluye añadir
estilos CSS para el control TextBox de ASP.NET, el cual requiere utilizar la propiedad
CssClass.
<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"
CssClass="grey" AutoPostBack="true" />
5.5 C# EventWork.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = "Cargar Página";
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox1.Text += "*";
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = "Botón Pulsado";
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (ListBox1.SelectedItem.Value)
{
case "Item1":
TextBox1.Text = "#1 Selected;";
break;
case "Item2":
TextBox1.Text = "#2 Selected";
break;
case "Item3":
TextBox1.Text = "#3 Selected";
break;
}
}
}
Cuando prueba su aplicación, verá todos los resultados presentados en el cuadro del
TextBox, como muestra la siguiente figura:
Figura 5. 9
Para ver como trabajan los eventos en el TextBox, escriba algo y pulse Enter, y verá
“Cargar Página” como resultado. El evento actualiza la pagina y entonces añade un
asterisco como requerido en el código de evento del TextBox.
AL utilizar más y más controles ASP.NET, se introducirá más eventos y funciones en C#.
En su mayor parte, lo que debe hacer es pulsar doble clic sobre un control en Microsoft
Visual Studio 2008 en modo diseño para el correcto deposito de los métodos para
aparecer en un listado de código C#.
5.6 Creando y Utilizando Clases
ASP.NET y C# ambos tienen incorporado una riqueza de clases, pero puedes construir
tus propias clases en C#. En C# como todos los lenguajes de programación orientado a
objetos (OOP), una clase es una forma de resumen de algo. Por ejemplo, puede resumir
un animal como un gato. Todos los gatos tiene ciertas características que son similares,
pero en verdad, los gatos poseen valores únicos para sus características generales. En
realidad los gatos en este ejemplo deberían referenciar como instancia del objeto Gato.
Por ejemplo, el mismo resumen de gato se aplica a una gato casero quien realmente
depende de sus dueños y su casa y un guepardo que se vale por si mismo en un medio
salvaje.
Cada vez que necesita un gato, puede utilizar la clase gato para proporcionar propiedades
generales, y entonces todo lo que tienes que hacer es especificar las características de
esas propiedades. Un gato casero y uyn guepardo ambos tienen velocidad para correr,
pero un guepardo puede exceder a una velocidad de 60 Kph, mientras que un gato casero
tiene una velocidad máxima de algo significativamente menor. Otras características y
acciones para otro gato son contenidas en la clase para que cuando realmente necesite
crear una instancia de gato, tengan características generales y especificas que usted
puede incluir para un gato en particular.
5.7 Hacer una clase simple de C#
Una clase real es una entidad muy flexible en programación. Hasta este punto en el libro,
usted tiene que ver varios ejemplos de clases parciales en C#, y son en efecto un tipo de
clase. Generalmente, las clases parciales que ha visto simplemente tienen un único
evento que se define por defecto en Page_Load. El resto de la clase usualmente implica
nada mas que colocar algunas declaraciones dentro de una función de manipulación de
eventos.







Una clase básica tienen típicamente lo siguiente:
Lista de declaraciones utilizadas.
La clase name.
La clase constructor
Variables (Instancias de variables privadas)
Propiedades (De acceso publico para las variables)
Métodos
Las clases que usted creará son únicamente public. Esto significa que pueden ser
accedidos desde otras clases, incluyendo clases parciales tales como puedo ver hasta
ahora. Lo siguiente muestra las características genéricas de una clase simple (Los
elementos claves han sido colocados en negrita).
using System;
public class MyClass
{
private string myProperty;
public MyClass()
{
myProperty = "Some value";
}
public string MyMethod(string paramName)
{
return myProperty + paramName
}
}
Si usted utiliza Java, El formato debería parecerle muy familiar. Algunos otros lenguajes,
como ActionScript 3.0, utilizan la palabra clave function para métodos, pero el enfoque
general es el mismo. Para tener una mejor idea de cómo crear una clase pura de C# en
un entorno ASP.NET en Microsoft Visual Studio 2008, la siguiente sección proporciona
un ejemplo simple:
5.8 Mutators y Accessors
En general, debería utilizar Mutators y accessors (También conocidos como “getters” and
“setters”) con propiedades privadas. Usted podría utilizar accesors para obtener el valor
de una propiedad y mutators para establecer un valor. Al hacerlo, usted encapsularía más
de una variable. Sin embargo, para mantener las funciones de C# en un sitio Web de
ASP.NET 3.5 relativamente corto, los accessors no podrán ser utilizados aquí. Para
emplear un modelo getter/setter, utilice el formato:
MiVariable
{
get
{
return MiVariable;
}
set
{
MiVariable = value;
}
}
Sin embargo, como un aviso de una buena practica, la mayoría de las variables son
definidas como privadas incluso a través de las funciones getters/setter que no se utilizan.
5.9 Creando el modulo ASP.NET
Para empezar, crear un nuevo sitio Web de ASP.NET de la misma forma como crearía
normalmente, el siguiente script ASP.NET solo tiene un simple cuadro de texto para la
salida, por lo tanto empezar por crear como una lista en ClassOut.aspx.
5.9.1 ASP.NET ClassOut.aspx
<%@ Page Language="C#"
Inherits="_Default" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Utilizando recursos de clases exteriores</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="OutPut" Width="200" runat="server" />
</div>
</form>
</body>
CodeFile="Default.aspx.cs"
1.0
Transitional//EN"
</html>
Como puede ver, los elementos ASP.NET tienen un aspecto bastante parecido a los que
se han cubierto hasta el momento. Usted no necesita hacer algo para el archivo ASP.NET
(.aspx) excepto que solo se utiliza una clase parcial de C#.
5.9.2 Añadiendo una clase C#
Una vez que su archivo ASPX ha iniciado, seleccione Archivo, señale Nuevo y clic en
Archivo en Microsoft Visual Studio 2008, y verá la ventana de Plantillas como lo muestra
la siguiente figura.
Figura 5. 10
Seleccione el icono Clase de C#, y añada un nombre para la clase con la extensión .cs.
Figura 5. 11
Una vez que ya lo tenga hecho, clic en el botón Agregar.
Tan pronto como usted hace clic en el boton Agregar, tendrá un cuadro de dialogo de
Alerta como lo muestra la siguiente figura.
Figura 5. 12
Clic en el botón Si. Esta acción crea una carpeta App_Code donde el archivo C# es
colocado.
Tan pronto como usted hace clic en el boton SI, verá que aparece la plantilla de clase C#
en su ventana de código como lo muestra la siguiente imagen:
Figura 5. 13
La plantilla de clase C# lista los mismos elementos utilizados como verá en la clase
parcial de C# cuando aparezca por primera vez. Ahora, añada lo que desee a su clase, y
entonces verá como instanciar una instancia de la clase en la clase parcial C#. Lo
siguiente muestra un listado de una clase simple de C# que puede utilizar.
5.9.3 OutClass.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Clase de un metodo sencillo para enviar cadenas
/// </summary>
///
// Declarando una clase con la clase etiqueta
public class OutClass
{
//Propiedad de la clase
private string header;
// La función constructor tiene el mismo nombre como la clase
public OutClass()
{
header="Desde su clase:";
}
//Método de clase
public string sendMsg(string fromClass)
{
return header + fromClass;
}
}
Esta clase tiene un solo método, sendMsg(), y una sola propiedad, header. Porque el
método sendMsg() es publico, usted puede acceder desde otras clases.
5.9.4 Accediendo a la clase C# desde la clase parcial de C#
EL paso final es para modificar la clase parcial de C# que es automáticamente generada.
Abrir la clase parcial de C#, y dentro de la función Page_Load, comience a agregar código
como muestra la siguiente figura.
Figura 5. 14
Para crear una instancia de OutClass dentro de la clase parcial, simplemente declare la
clase y entonces cree una instancia en la línea 9 como muestra la imagen anterior.
Una vez tenga creada la instancia de la clase, IntelliSense reconoce el método OutClass,
haciendo esto es muy fácil desarrollar con clases de usuario que ha desarrollado usted
mismo.
Al mirar toda la clase parcial de C#, puede ver la instancia de la clase de usuario que
representa una puerta de acceso a cualquier clase en C#, no importa cuan simple o
complejo sea. De manera que si usted ha creado sofisticados patrones de diseño en C#,
usted puede crear una instancia en la clase parcial de C# conectado a ASP.NET asi como
lo haría utilizando el editor de proyectos C# o cualquier otra herramienta que elija.
El siguiente listado muestra como las clases parciales son vinculadas ambas a la clase de
usuario (OutClass) y a un TextBox de ASP.NET, OutPut.
5.9.5 C# OutClass.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
private OutClass outClass;
private string fromClass;
protected void Page_Load(object sender, EventArgs e)
{
outClass= new OutClass();
fromClass = outClass.sendMsg("La clase OutClass");
Output.Text = fromClass;
}
protected void OutPut_TextChanged(object sender, EventArgs e)
{
}
}
Una vez haya finalizado y guardado los tres módulos, pruebe su aplicación, Verá un
resultado como muestra la siguiente imagen.
Figura 5. 15
Al mirar la imagen de arriba, puede ver la contribución de cada uno de los tres elementos
principales.



La ventana muestra el texto (TextBox desde ASP.NET)
“Desde su clase:” (Contenido de la propiedad de clase C#, header)
“La clase OutClass” (Texto en el parámetro del método sendMsg desde la
instancia de clase ClassOut en la clase parcial.
Como puede ver, cada uno de los tres scripts hacen una contribución. La lección principal
de esto, sin embargo, es que pueden acceder a clases y estructuras C# desde la clase
parcial asociada con los controles y forms de ASP.NET.
5.10 Utilizando Interfaces
Al igual que las clases, las interfaces en C# pueden ser utilizadas en conjunto con una
aplicación ASP.NET. Generalmente, las interfaces son utilizadas en estructuras de mayor
sofisticación, y aunque puede que no los necesite para aprender ASP.NET, conocer como
utilizarlos con ASP.NET puede resultar valiosa con estructuras más avanzadas
encontradas en la programación orientada a objetos o en patrones de diseño.
Al igual que una clase, una interface es una abstracción a emplearse concretamente en
implementaciones específicas. Generalmente, las interfaces asignan un grupo de
funcionalidades relacionadas. Usted podría pensar de una clase como una abstracción
de un objeto y de una interface como una abstracción de un método. Una interface no
puede ser directamente instanciada, sino que debe ser instanciada desde una clase
concreta que implemente una interface. Además, una buena practica clave es para un
programa de interface y no para una implementación.
Esto significa que la tipificación será la interface, pero la instancia es para la clase que
implementa la interfaz.
Para comprender mejor la interface y su uso, miremos un buen libro de OOP o C#.
Aquí, usted verá como una interface puede ser utilizada con una aplicación Web en
ASP.NET. En esta próxima aplicación de ejemplo, verá una sencilla interface con salida a
un form ASP.NET.
1° Crear un nuevo Sitio Web en Visual Studio 2008.
2° Pulse clic en el menú Sitio Web y luego clic en Agregar nuevo elemento….
Figura 5. 16
3° En el cuadro de dialogo Crear nuevo elemento, en la sección Plantillas, pulse clic en
Web Forms.
4° En el cuadro Nombre escribe: Iface.aspx.
5° Clic en Agregar.
Figura 5. 17
6° Ahora añadiremos el siguiente código:
5.10.1 ASP.NET Iface.aspx
<%@
Page
Language="C#"
Inherits="Iface" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
CodeFile="Iface.aspx.cs"
1.0
Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ejemplo de interface</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" />
<br />
<asp:Label ID="Label2" runat="server" />
</div>
</form>
</body>
</html>
7° En la clase parcial, será implementada la interface. El nombre de la interface es IfaceIt.
Los tipos de script son dos objetos de nombre iA y iB como tipos IfaceIt. Entonces,
usaremos el objeto IfaceIt, este crea dos clases de instancia que implementa la interface.
Porque ambas clases implementan la interface, usted puede utilizar los tipos de objetos
para la instancia de interface de cada una de las diferentes clases como lo muestra el
siguiente script.
5.10.2 C# Iface.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Iface : System.Web.UI.Page
{
private string showMe;
private IfaceIt iA;
private IfaceIt iB;
protected void Page_Load(object sender, EventArgs e)
{
iA = new UseIfaceA();
iB = new UseIfaceB();
Label1.Text = iA.Show();
Label2.Text = iB.Show();
}
}
8° A continuación se creará una interface sencilla. La interface tiene un único método que
no hace nada mas que regresar una cadena. La cadena realmente puede regresar
cualquier cosa, y los detalles de los métodos son dejados a la implementación real de la
interface en clases concretas. Todos ellos tienen para hacer regresar una cadena y utilizar
el nombre de un método especifico en la interface; el método Show, no tiene contenido,
solo regresa el tipo (String).
9° Clic en el menú Archivo, señale Nuevo y clic en Archivo.
10° Clic en el icono de C# Clase.
11° En el cuadro Nombre escribe: Ifacelt.cs
12° Clic en Agregar.
Figura 5. 18
13° Escribimos el siguiente código
5.10.3 C# IfaceIt.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Descripción breve de IfaceIt
/// </summary>
public interface IfaceIt
{
String Show();
}
14° Para hacer concreta a la clase que implementará la interface, el código es como una
herencia, utilizando los dos puntos para indicar la implementación. También tiene que
proporcionar el contenido específico para el método. En este ejemplo, el método Show(),
regresa una cadena literal indicando la identidad de la implementación. Observe que la
cadena literal contiene una etiqueta XHTML que puede ser leída por el form ASP.NET.
5.10.4 C# UseIfaceA.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Descripción breve de UseIfaceA
/// </summary>
public class UseIfaceA:IfaceIt{
public String Show()
{
return "Primera implementación<br/>";
}
}
15° La segunda implementación de la interface es similar, pero tiene una cadena literal
como valor de retorno para el método.
5.10.5 C# UseIfaceB.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Descripción breve de UseIfaceB
/// </summary>
public class UseIfaceB: IfaceIt
{
public String Show()
{
return "Segunda implementación";
}
}
Es posible que desee asegurarse de que los archivos de la interfaz y las dos clases que
implementan la interfaz se encuentran en la carpeta App_Code antes de probar su
aplicación. Cuando todo este listo, pulse clic en la ficha de Iface.aspx y luego Ctrl + F5
para probar su aplicación.
La siguiente imagen muestra los diferentes resultados generados por la misma interface
implementada en dos diferentes clases. La clase parcial que ha personalizado para usarlo
con el código ASP.NET es capaz de crear instancias de objetos basados en la interface
sin ningún problema. Lo mismo con estructuras largas en C# que usan interface.
Figura 5. 19
5.11 Pregunte a los expertos
¿Qué es exactamente lo que se entiende por herencia?
Cuando una clase o clase parcial hereda otras clases, la clase heredada obtiene todas las
características de la clase que ha heredado. Esto significa que la clase que hereda,
también llamado secundario o subclase de la clase heredada, puede utilizar todos los
métodos y propiedades de la clase padre.
5.12 Haciendo más con C# y la programación orientada a objetos
Este libro es realmente una larga nota acerca del uso de estructuras más sofisticas en C#,
pero necesitará mirar un libro completo basado en C# para ingresar en el tipo de detalles
que tendrá que emplear OOP. Usted encontrará que C# es increíblemente un poderoso
lenguaje.
Si ya conoce y se siente frustrado por utilizar las clases parciales en lugar de las
autenticas estructuras OOP y clases C#, espero que usted haya visto como utilizar las
clases completas en este capitulo y que no tienen por que temer o estar limitados a las
clases parciales cuando utiliza C# con ASP.NET 3.5. Todo lo que quiera hacer con C#, lo
puede hacer con las clases parciales de C#. Lo que es más, porque las clases parciales
son confeccionadas en ASP.NET y puede utilizaer todas las estructuras de ASP.NET.
Capitulo 6: Formularios HTML
Una de las frustaciones de trabajar con formularios HTML es que ellos no pueden trabajar
por si mismos. A menos que algunos otros lenguajes de programación estén trabajando
con paginas HTML, el usuario no irá a ningún lado. Por lo tanto, este capitulo revisa
formularios HTML para mostrar como los nombre de los datos y formularios pueden ser
direccionados en aplicaciones ASP.NET. SI usted está familiarizado con formularios
HTML y sus atributos, aun debe tomar una mirada sutil a las diferencias entre usarlo con
HTML y con ASP.NET.
6.1 Trabajando con etiquetas de formulario y atributos
Todos los formularios en HTML comienzan con la etiqueta <form>. Si usted está
trabajando con algunos otros tipos de código o archivos externos, cuando quiera
direccionar datos enteros en el formulario, verá algo como lo siguiente:
<form id="myForm" action= "someURL" method = "post">
El form id actúa algo así como un nombre de variable para distinguirlo de cualquier otro
formulario que podría estar en la página. La acción exige una URL invocando la llamada
al programa. Si usted está familiarizado con el original ASP o con PHP, usted debe saber
que los datos en los formularios HTML pueden ser direccionados estos otros programas
que son denominados. El atributo común del final es un método con uno o dos valores,
post o get. El método utilizado depende de si el form es inalterable o no. Para todos los
propósitos practicos, un método inalterable es único cuando los valores son
inmodificables incluso cuando multiples llamadas son hechas. Los métodos no
inalterables son únicos cuando los valores pueden ser cambiados. Cuando los formularios
son inalterables, utilice el método get; de lo contrario utilice el método post. Por lo tanto
los métodos no inalterables son más utilizados frecuentemente, los desarrolladores
tienden a utilizar el método post. La selección de un método puede causar ardientes
debates en un entorno HTML, pero en ASP.NET, no verá un valor asignado a un método
atributo. En lugar de ello, verá algo como lo siguiente:
<form id="myForm" runat="server">
Asi como tuvo que ver en capítulos anteriores, todas las paginas Web en ASP.NET
contienen <form runat=”server””> algunos en el archivo ASPX. En su mayor parte, es la
principal diferencia (y uuna muy grande) entre formularios HTML en cualquier HTML o
XHTML y en ASP.NET.
6.2 Propiedades de etiquetas HTML
Las etiquetas HTML tienen varias diferentes propiedades o atributos. La manera sencilla
de ver una etiqueta de propiedades o atributos es con Visual Studio 2008. Para comenzar
a ver etiquetas HTML en un Web form, debe crear un simple proyecto utilizando algun
formulario HTML.
Nota: Usted puede encontrar atributos de etiquetas HTMLcomo www.w3.org, el sitio
principal de World Wide Web Consortium´s. Para la mayoría de recientes proyectos, vea
www.3w.org/html/wg/html5/.
6.3 Utilizar formularios HTML con Sitios Web de ASP.NET
Utilice los siguientes pasos para crear un sitio utilizando formularios HTML.
1° Abrir Visual Studio 2008.
2° Pulse clic en Archivo, señale Nuevo y clic en Sitio Web.
3° Si desea agregue la dirección donde se guardará su sitio Web y clic en Aceptar.
Nota: Asegúrese que la Ventana propiedades este activa. Si no es así, pulse clic en el
menú Ver y clic en Ventana Propiedades.
4° Una vez haya abierto un nuevo sitio Web, seleccione la palabra “form” en la línea <form
id=”form1” runat=”server”>.
5° Ahora observe su Ventana de Propiedades y observe sus atributos como lo muestra la
siguiente figura.
Figura 6. 1
6° En el Cuadro de herramientas, pulse clic en HTML.
Figura 6. 2
7° Ahora en el Cuadro de herramientas HTML, arrastre el control Input (Text) debajo del
contenedor <div> y antes del contenedor </div>
Figura 6. 3
8° Pulse clic al antes de /> de la línea <input id=”Text1” type=”text” />. Ahora escribe:
Runat=”server”
Ahora pulse la Barra espaciadora para dejar un espacio.
Figura 6. 4
9° El form Input (Text) no tienen un atributo Text (o propiedad) como el control TextBox en
ASP.NET. En lugar de ello tienen un atributo value que puede ser usado para añadir
algunos tipos de contenido al formulario. Añadir el valor “Mi mensaje” a la entrada de texto
utilizando el código value=”Mi mensaje” dentro de la etiqueta. La línea debería ser ahora:
<input id="Text1" type="text" runat="server" value="Mi mensaje" />
Figura 6. 5
10° Finalmente, añada <br/> al final de la línea para crear una nueva línea donde el
próximo elemento HTML irá.
Figura 6. 6
11° Seleccione un form Textarea y arrastre al escenario debajo de Input (Text) y a la
izquierda.
Figura 6. 7
12° Añada runat=”server” al final, y elimine la etiqueta </textarea> y coloque el slash de
cierre al final de la etiqueta como muestra la siguiente línea.
<textarea id="TextArea1" cols="20" rows="2" runat="server" />
Figura 6. 8
Una vez que tenga hecho los cambios, su código se debería parecer como lo siguiente:
6.3.1 FormWork1.aspx
<%@ Page Language="C#"
Inherits="_Default" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
CodeFile="Default.aspx.cs"
1.0
Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Página sin título</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Text1" type="text" runat="server" value="Mi mensaje" /><br />
<textarea id="TextArea1" cols="20" rows="2" runat="server" />
</div>
</form>
</body>
</html>
Una vez que tenga todo guardado en el archivo ASPX, necesitará tratar con elementos
HTML desde el lado de C#. Esto es lo que vamos a hacer.
6.3.2 C# y etiquetas HTML
El siguiente paso es bastante simple porque todo lo hecho es transferido a la cadena
literal en el form Input (Text) del form Textarea. (Por lo tanto en esta sección, verá lo que
sucede si usted intenta utilizar un boton HTML para esperar la entrada del usuario). Por
ahora, sin embargo, simplemente edite la clase parcial de C# a lo siguiente.
6.3.3 C# FormWork1.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextArea1.Value = Text1.Value;
}
}
Como puede ver, el script simplemente transfiere el valor del form de entrada de texto al
textarea. Ambos forms usan el valor atributo, y C# es capaz de usar estos elementos form
HTML para colocar el contenido de un form dentro de cualquier otro como ve en la
siguiente imagen:
Figura 6. 9
Obviamente, transfiriendo datos desde una entrada de texto a un textarea no es
demasiado útil a menos que el usuario tenga una oportunidad de ingresar datos. Por lo
tanto, necesitamos mirar utilizando algo para celebrar la transferencia hasta que este lista
para ser usada.
6.4 Botón HTML
Ahora que ha visto que C# puede pasar valores entre formularios HTML, vamos a echar
un vistazo a los botones HTML. La mala noticia es que los botones HTML no generan
automáticamente el código C# para manipular eventos. Con botones Estandar, todo lo
que tienen que hacer es cambiar a el modo Diseño y pulsar doble clic en el boton para
generar el manipulador de eventos C#. Sin embargo cuando hace doble clic en un botón
HTML, se obtiene en su lugar código JavaScript.
6.4.1 Utilizando botones HTML
Los siguientes pasos le brindan a usted una vista rápida de lo que sucede cuando utiliza
un boton HTML en lugar de un boton Estandar del Cuadro de herramientas.
1° Abrir un nuevo WebSite seleccionando Archivo, luego Nuevo y clic en sitio Web. Dar el
nombre “basura” porque usted lo hechara cuando termine.
2° En el modo Código, arrastre un Input (Button) desde el Cuadro de herramientas al
contenedor <div> (entre las etiquetas <div> y </div>)
Figura 6. 10
3° Cambiar al modo Diseño, y pulse doble clic en el icono Button. (Puede recordar de
capítulos anteriores que esta acción genera automáticamente una función C# para
manipular el evento del boton).
Figura 6. 11
Sin embargo, en lugar de generar código C# para controlarlo, se genera el siguiente
código JavaScript:
<script language="javascript" type="text/javascript">
// <!CDATA[
function Button1_onclick() {
}
// ]]>
Que puede ser una pieza útil de código JavaScript, pero no es que lo necesite en su clase
parcial de C# para crear un controlador de eventos utilizando el método code-behind. Asi
mismo, cuando crea aplicaciones utilizando formularios HTML, va a necesitar un diferente
enfoque para activar los eventos de C#.
6.4.2 ASP.NET Junk.aspx
<%@
Page
Language="C#"
Inherits="Junk" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Página sin título</title>
<script language="javascript" type="text/javascript">
// <!CDATA[
function Button1_onclick() {
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
CodeFile="Junk.aspx.cs"
1.0
Transitional//EN"
<div>
<input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
</div>
</form>
</body>
</html>
6.5 Botones Estándar y formularios HTML
Como tuvo que ver, puede utilizar formularios HTML, pero cuando intentamos poner un
boton HTML en una aplicación, Visual Studio 2008 genera automáticamente código
JavaScript. ¿Es posible utilizar los botones estándar de ASP.NET con los botones
Estandar? En otras palabras, ¿Puede C# manipular una combinación de controles
Estandar y formularios HTML? Afortunadamente, la respuesta es SI.
6.6 Utilizando botones estándar de ASP.NET
La próxima aplicación ilustra una combinación de controles estándar de ASP.NET con
formularios HTML que son establecidas a runat=”server” asi mismo ellos pueden trabajar
con ASP.NET y se entenderan como formularios por el código subyacente C#. Mientras
estamos en ello, añadiremos una imagen a fin de que podamos ver si es posible combinar
en etiquetas como <img> a la aplicación. Los siguientes pasos muestran como crear la
aplicación:
1° Abrir un nuevo sitio Web seleccionando Archivo, señale Nuevo y clic en Sitio Web.
Darle el nombre HtmlForm2.
2° Seleccionar el modo Codigo y HTML en el Cuadro de Herramientas.
Figura 6. 12
3° Arrastre una instancia del form Input (Text) y el form Textarea dentro del contenedor
<div>.
Figura 6. 13
4° Seleccione el menú Estandar en el Cuadro de herramientas de Visual Studio 2008, y
arrastre una instancia de un Button a la pagina de código y coloque justo debajo de la
etiqueta <textarea>
Figura 6. 14
5° Coloque una imagen en la carpeta HtmlForm2 como muestra la siguiente imagen. En
este caso, utilizo un clip de fotografía en formato JPG.
Figura 6. 15
6° Cambiar al modo Diseño, y arrastre la imagen desde la carpeta a la posición que usted
quiera en la pagina. Cuando arrastra la imagen, un cuadro de dialogo aparece y pide un
texto alternativo y una descripción larga.
7° En el cuadro Texto alternativo, escribe: Antílope.
8° En el cuadro Descripción larga, escribe: Imagen en JPG.
9° Clic en Aceptar.
Figura 6. 16
Una vez finalizado, aumente algunas etiquetas para que su código se muestre como lo
siguiente.
6.7 Mixed.aspx
<%@ Page Language="C#"
Inherits="_Default" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Página sin título</title>
</head>
<body>
<form id="form1" runat="server">
<div>
CodeFile="Default.aspx.cs"
1.0
Transitional//EN"
<input id="Text1" type="text" runat="server" /><br />
<textarea id="TextArea1" cols="20" rows="2" runat="server"></textarea><br />
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<br />
<img alt="Antílope" longdesc="Formato JPG" src="Antelope.jpg"
style="width: 308px; height: 231px" />
</div>
</form>
</body>
</html>
Una parte importante de este ejercicio es ver si los diferentes tipos de combinación de
formularios HTML y botones Estandar de ASP.NET trabajarán juntos. Tambien, recuerde
que los objetos incluyen un archivo JPEG, y el archivo de imagen debe jugar muy bien en
la caja de arena con los otros elementos que se crean utilizando runat=”server” en sus
contenedores de etiquetas.
6.8 C# Mixed.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
TextArea1.Value = Text1.Value;
}
}
Una vez tenga el código completo, ir por delante y probarlo. Como puede ver la próxima
imagen, los dos diferentes form de HTML aparecen solos con el boton Estandar
dASP.NET y la imagen del antílope.
Figura 6. 17
Ingrese un texto en el campo de texto superior de HTML y clic en el boton. Verá que el
valor del cuadro de texto superior, pasa al cuadro de texto inferior sin ningún problema.
Figura 6. 18
6.9 Utilizando formularios HTML Interactivos
Usted puede utilizar formularios HTML para la entrada de datos en una aplicación
ASP.NET, pero para utilizar botones HTML, vamos a tener que poner algun código
especial en lugar de confiar en nuestro viejo amigo Visual Studio 2008 para hacer todo el
trabajo. Lo primero que todo, usted necesitará utilizar un boton Enviar cuando crea su
boton para lanzar un evento controlado de C#. En segundo lugar, necesitaremos un
formato especial para especificar un evento. Lo siguiente muestra los elementos claves
que necesitará para ingresar de la mano después de haber arrastrado el boton Input
(Submit) desde el Cuadro de herramientas al escenario:
<input id="MyButton" type="submit" value="Button" OnServerClick=
"My_Click" runat="server" />
Dos atributos claves deben ser incluidos. En primer lugr, necesita el atributo…
OnServerClick="My_Click"
El valor no hace necesario que sea “My_Click”, será cualquier nombre. EL valor
(“My_Click”) es el nombre de evento que utilizará con la aplicación de la parte de C#.
El segundo atributo clave dice el script que este boton es una aplicación del lado del
servidor. Esto es requerido para todas las etiquetas HTML que serán usadas con C#...
runat="server"
En el proceso de depuración, la primera cosa que se verifica es si el runat=”server” ha
sido añadido a su etiqueta HTML.
En el código C# el enfoque sencillo es para cambiar el código predeterminado del
controlador de evento de C# desde…
protected void Page_Load(object sender, EventArgs e)
{
//Operational code
}
a…
protected void My_Click(object sender, EventArgs e)
{
//Operational code
}
Como puede ver, el cambio es minimo. Usted solo sustituye su propio nombre de
manejador para el predeterminado Page_Load. Todo C# será buscado por el verdadero
nombre del evento basado en el atributo OnServerClick0”My_Click” en su etiqueta button
y runat=”server”.
6.10 Pregunte a los expertos
¿Puede utilizar cualquier nombre de controlador de evento que quiera? ¿Qué debo
hacer si quiero utilizar “Page_Load” como nombre de controlador de evento para
un boton? Se que no tiene sentido, pero es curiosidad.
Porque Page_Load es un evento de página, no responderá a un evento button_click. De
hecho, ASP.NET 3.5 y C# tienen varios eventos de páginas tales como Page_Unload,
Page_Init, y Page_LoadComplete que no responderán a un button_click. Sin embargo, si
utiliza un controlador de evento como nombre Page_Click con un boton, responde tan
bien como cualquier otro nombre asociado con un control Button. Incluso aprendes mas,
sin embargo, Yo recomiendo que no utilice el prefacio Page_ a menos que lo único que
quiera es tener que responder a una pagina de evento de página.
6.11 Extrayendo valores desde formularios HTML
Hasta este punto, hemos estado utilizando el atributo value de diferentes modos de
formularios de texto HTML para pasar valores. Sin embargo, en adicion a los formularios
de texto en HTML, usted tiene una selecciona de mayor riqueza de donde elegir. Incluyen
menús de lista desplegables (Select forms), radio buttons y checkboxes. Cada uno de
esos han sido colocados en el UI (User Interface) por varios diferentes tipos de sitios.
Cada uno de estos formularios HTML se analizan junto con como los datos pueden ser
retirados desde diferentes formularios. Entonces, usando varios diferentes formularios
HTML, veremos como hacer una política de aplicación que utiliza una muestra de
formularios de entrada de datos en HTML.
6.12 HTML Select Form
Los HTML Select forms son llamados a menudo menús pop-up o listas desplegables.
Ellos son utilizados cuando el usuario tiene que seleccionar desde una larga liusta de
opciones, y no posee mucho espacio en la página para mostrarlos. SI usted alguna vez ha
seleccionado una lista de países que comienza con Afganistan y termina en Zimbabwe,
usted tienen una buena idea de cuanto espacio tiene una lista de este tipo. Sin embargo,
por medio de un Select form, puede almacenar todos los países del mundo y tomar solo
una línea de ellos.
6.12.1 Configuracion ASP.NET con HTML Select
Configurar un Select form es un poco diferente que alguno de los otros forms de HTML
porque usted añade varias líneas. Inicialmente cuando usted arrastra un Select form
desde el Cuadro de herramientas de HTML, usted verá el contenedor <select> y dentro un
contenedor simple <option>. Usted puede agregar cualquier cantidad de elementos como
quiera. Tipicamente la opcion de arriba es el nombre del menú, y entonces cada opcion
seleccionable es una categoría o caso dentro del conjunto. Por ejemplo, lo siguiente
muestra como un Select form es configurado en ASP.NET.
<select id="Select1" runat="server">
<option>Country</option>
<option>Afghanistan</option>
<option>Albania</option>
<option>Algeria</option>
</select>
Un atributo importante a incluir en el HTML Select es el objeto runat=”server”. Si usted
olvida agregar este atributo, este no será reconocido por el script de C#. Tambien, usted
tiene que decidir si la lista Select va a permitir multiples elecciones a la vez o se excluyen
mutuamente. Si quiere que el usuario seleccione multiples opciones, entonces debe
agregar el atributo y valor…
multiple="multiple"
Dentro de la etiqueta <select>. Por supuesto, usted puede querer agregar algunas de las
otras propiedades también, y más adelante en el libro usted verá algunas propiedades
utiles cuando trabaja con tipos específicos de datos.
6.12.2 Lectura de C# y escribiendo HTML Select form
La forma sencilla de pensar en un HTML Select form, es como un array. El nombre del
array es el valor asignado al atributo id. En el ejemplo, el nombre predeterminado Select1
es el valor id. Cada opcion en el formulario puede ser tratado como un elemento array.
Usted puede referenciar las opciones como Items en un array. Por ejemplo, si tomamos el
segundo ítem en el Select form, en un array basado en cero, podríamos tener Afganistan
como la variable de cadena en la siguiente línea:
String someCountry = Select1.Items[1];
//Algunos países podrían tener el valor Afganistan
Por supuesto, cuando está programando en C#, los únicos valores que quiera son
seleccionado por el usuario. Una de las propiedades, Selected, es un Booleano. Asi
mismo, si el usuario selecciona el cuarto elemento, por ejemplo, el valor de ese ítem sería
true. En el listado anterior, el valor del cuarto ítem podría ser Algeria. Lo bueno de pensar
acerca de arrays es que usted puede usar un bucle para iterar a través de ellos. De este
modo si usted tiene una larga lista, esto es fácil para verificarlos a cada uno con un
minimo código. En el caso del Select form, buscaría para observar si la opciones está
seleccionada. Si está seleccionada, entonces su código puede pasarlo a donde quiera
que vaya. Lo siguiente muestra un típico bucle para inspeccionar el contenido de un
HTML Select form y entonces enviarlo a un form textarea.
for (int state = 0; state <= Select1.Items.Count -1;state++)
{
if (Select1.Items[state].Selected)
{
TextArea1.Value += Select1.Items[state].Text + "\n" ;
}
}
Note que la propiedad Count del objeto Select.Items es utilizado para determinar la
longitud del array (número de opciones) Tambien note que 1 se resta del número de
opciones porque al igual que todos los arrays, este se basa en cero. La siguiente imagen
muestra un típico menú de lista desplegable usando un HTML Select form.
Figura 6. 19
Como una interfaz de usuario, el Select form es practico para el ahorro de espacio; sin
embargo, Select form necesita ser usado prudentemente. A menudo los usuarios pasan
por alto un menúr de lista desplegable como la categoría correcta para una seleccion. Si
lo hacen, ellos pueden perder algo que tratamos de encontrar. (Que definitivamente no es
algo que quiera que esto suceda en una aplicación e-business) Es bastante seguro su uso
con categorías conocidas como estados y países.
6.13 Cuadros de verificación HTML
Los cuadros de verificación son fantásticos para situaciones donde usted quiera que el
usuario haga una o varias selecciones. No solo es fácil para el usuario hacer la selección,
sino también el check box (cuadro de verificación) es un camino para dejar que el usuario
conozca cuales son sus opciones. Como verá, son fáciles para usar en una colección de
datos y otros practicos IU.
6.13.1 COnfiguracion de ASP.NET con HTML Checkbox
Cada check box que usted coloca en su aplicación necesita un separador de atributo id,
value y runat=”server”. A diferencia del HTML Select form, el HTML check box no
almacena valores en un contenedor <option>, sino mas bien es asignado a un atributo
value. Lo siguiente muestra una tipicaconfiguracionde check box en un archivo ASPX:
<input id="Checkbox1" type="checkbox" runat="server" value="Economy"/>
Para que el usuario pueda conocer la referencia al check box, depues de la etiqueta de
cierre de caracteres, necesita que escriba un valor. Por ejemplo, lo siguiente muestra lo
que suele seguir la etiqueta de cierre de caracteres.
runat="server" value="Economy/>Economy<br/>
SI el check box es puesto verticalmente, como es típicamente el caso, cada check box
será seguido por algun tipo de etiqueta de salto de línea.
6.13.2 Lectura de C# y escribiendo HTML Checkboxes
El check box tiene dos estados: Activo, o no activo. Al igual que la propiedad Selected del
HTML Slect form , el Checked es Booleano. Trabajar con el estado de cada check box
usando declaraciones condicionales estándar, ambos pueden consumir tiempo y
desordenaro su código.
Utilizando un operador terniario C# simplifica en gran medida y condensa el proceso de
engañar el estado actual del check box. La siguiente línea muestra un ejemplo sencillo:
SendValue=Checkbox1.Checked == true ? Checkbox1.Value: null;
La línea simplemente se pregunta si el check box es verdadero o no, si es asi, que asigne
el valor al check box para la variable SerdValue. Si no es verdadero, SendValue es
asignado un valor nulo. Usando el operador ternario, el proceso completo solo toma una
simple línea en lugar de varias líneas usando una secuencia if…else.
La siguiente imagen muestra un uso típico para check boxes. El usuario dispone con
varias diferentes opciones y puede elegir como muchos o pocos como desee.
Figura 6. 20
Como puede ver, las opciones son claras y visibles. Todos los usuarios tienen que hacer
clic al check box para seleccionar la opcion o clic nuevamente para dejar de seleccionarlo.
6.14 HTML Radio Button
El radio button en HTML son virtualmente idénticos al check box con una importante
excepción. Los Radio buttons son para seleccione mutuamente exclusivas ( si usted
selecciona alguno, no puede seleccionar otro) y los check boxes son para multiples
selecciones. Por ejemplo, si pide a una persona que indique su sexo, será varón o mujer,
pero no ambos. A veces los diseñadores questionan pues quieren forzar a una única
respuesta, tales como que el usuario considera una única elección más importante en
lugar de todas aquellas elecciones que también considera importantes.
6.14.1 Configurar ASP.NET con HTML Radio Buttons
AL igual que con los check boxes, necesita incluir con el radio button un único atributo id,
value y runat=”server”. Sin embargo, el HTML radio form también tiene un atributo name.
El atributo name con el radio button es realmente un group name en que varios diferentes
radio buttons con un único valor id pueden todos tener el mismo nombre. De lo contrario,
el formato es el mismo como con el HTML checkbox. El siguiente ejemplo muestra dos
típicos radio buttons con el mismo nombre pero con diferentes ids y valoes:
<input id="Radio1" type="radio" name="party" value="Democratic"
runat="server" />
<input id="Radio2" type="radio" name="party" value="Republican"
runat="server" />
Como puede ver, ambos tienen el valor party en name. Cuando el usuario pulsa clic en un
radio button, todos los otros con el mismo nombre son deseleccionados. Ellos pueden
tener diferentes valors id como usted quiera, pero un solo radio button en un group name
puede ser seleccionado en cualquier momento.
6.14.2 Lectura en C# y escribiendo con HTML Radio Buttons
Cuando C# lee un radio button, este lo lee solo como check boxes. La propiedad Checked
es un booleano adjuntando al radio button el valor id. Como resultado, puede usar el
mismo operador ternario de C# como con check boxes en HTML, Mire un ejemplo:
SendValue = Radio1.Checked == true ? Radio1.Value: null;
Verifique que el atributo name no es usado. Como resultado, cuando verifica si el radio
button es Activado, necesitará verificar cada id por separado.
La siguiente imagen muestra un típico ejemplo de radio button. Cuando crea una consulta
usando radio buttons, asegurese en proporcionar todas las categorías posibles. La otra
categoría podría ser útil para seleccionar usuarios que son Libertarian, Green o algunas
partes no listadas.
Figura 6. 21
SI el usuario selecciona cualquiera de las categorías de los otros radio buttons, la única
selección actual podría ser desactivada. ( El circulo de relleno en un radio button no se
parece a un check (visto bueno), pero es asi el nombre de la propiedad)
6.15 Una Encuesta política usando forms HTML
Para ver una practica de cómo uestd podría incorporar forms HTML, este próximo ejemplo
utiliza varios diferentes forms. Una vez los usuarios completen el form, la salida es
presentada en un textarea de HTML. Para la entrada de datos y cálculos, la aplicación no
es muy diferente de uno que podría desarrollar para introducir datos en una base de
datos.
1° Abrir Visual Studio 2008.
2° Clic en el menú Archivo, señale Nuevo y clic en Sitio Web.
3° Escriba como nombre EncuestaPolitica y luego clic en Aceptar.
Figura 6. 22
4° Pulse clic en el Explorador de soluciones.
Figura 6. 23
5° Pulse clic derecho en Default.aspx y escriba: Poll.
Nota: Puedes agregar el nombre Poll o Política.
6° Escriba el siguiente código:
6.15.1 ASP.NET Poll.aspx
<%@
Page
Language="C#"
Inherits="Poll" %>
AutoEventWireup="true"
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
CodeFile="Poll.aspx.cs"
1.0
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Encuesta Política</title>
</head>
<body>
<center><h1>Encuesta de votación para New England</h1></center>
<form id="form1" runat="server">
<div>
Estado<br />
<!-- Select Menu -->
<select id="Select1" runat="server">
<option>Seleccionar Estado</option>
<option>Connecticut</option>
<option>Maine</option>
<option>Massachusetts</option>
<option>New Hampshire</option>
<option>Rhode Island</option>
Transitional//EN"
<option>Vermont</option>
</select>
      
<!-- Input Text -->
<input id="Town" type="text" value="Nombre de ciudad" runat="server"/>
<br />
Afiliación al partido
<br />
<!-- Radio Buttons -->
<input id="Radio1" type="radio" name="party" value="Democrático" runat="server"
/>Democrático<br />
<input id="Radio2" type="radio"
/>Republicano<br />
name="party"
value="Republicano"
runat="server"
<input id="Radio3" type="radio" name="party" value="Independente" runat="server"
/>Independiente<br />
<input id="Radio4" type="radio" name="party" value="Otros" runat="server" />Otros<p />
Cuestiones importantes (Marque todas las respuestas pertinentes)<br />
<!-- Checkboxes -->
<input id="Checkbox1" type="checkbox" runat="server" value="Economía" />Economía<br
/>
<input id="Checkbox2" type="checkbox" runat="server" value="Entorno" />Entorno<br />
<input
id="Checkbox3"
type="checkbox"
runat="server"
Internacionales" />Relaciones Internacionales<br />
<input id="Checkbox4" type="checkbox"
/>Reforma electoral <br />
<input
id="Checkbox5"
/>Tecnología<p />
runat="server"
type="checkbox"
value="Relaciones
value="Reforma Electoral"
runat="server"
value="Tecnología"
<!-- Buttons -->
<input
id="Reset1"
type="submit"
OnServerClick="Reset_Click" />
value="Clear"
runat="server"
<input
id="Submit1"
type="submit"
OnServerClick="Submit_Click" />
value="Send
Data"
<p />
<!-- Textarea -->
<textarea id="TextArea1" cols="40" rows="10" runat="server"></textarea>
</div>
</form>
</body>
</html>
6.15.2 C# Poll.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Poll : System.Web.UI.Page
{
runat="server"
protected void Reset_Click(object sender, EventArgs e)
{
Radio1.Checked = false;
Radio2.Checked = false;
Radio3.Checked = false;
Radio4.Checked = false;
TextArea1.Value = "";
Town.Value = "Nombre de la ciudad";
for (int state = 0; state <= Select1.Items.Count - 1; state++)
{
Select1.Items[state].Selected = false;
}
Checkbox1.Checked = false;
Checkbox2.Checked = false;
Checkbox3.Checked = false;
Checkbox4.Checked = false;
Checkbox5.Checked = false;
}
protected void Submit_Click(object sender, EventArgs e)
{
//Handle Input (Text)
TextArea1.Value = "Usted vota en " + Town.Value + ", ";
//Handle Select
for (int state = 0; state <= Select1.Items.Count - 1; state++)
{
if (Select1.Items[state].Selected)
{
TextArea1.Value += Select1.Items[state].Text + "\n";
}
}
//Handle Radio Buttons
TextArea1.Value += Radio1.Checked == true ? " Su afiliación es:" +
Radio1.Value + "\n" : null;
TextArea1.Value += Radio2.Checked == true ? " Su afiliación es:" +
Radio2.Value + "\n" : null;
TextArea1.Value += Radio3.Checked == true ? " Su afiliación es:" +
Radio3.Value + "\n" : null;
TextArea1.Value += Radio4.Checked == true ? " Su afiliación es:" +
Radio4.Value + "\n" : null;
//Handle Checkboxes
TextArea1.Value += "Estas cuestiones son importantes para:\n";
TextArea1.Value += Checkbox1.Checked == true ? " " + Checkbox1.Value + "\n" :
null;
TextArea1.Value += Checkbox2.Checked == true ? " " + Checkbox2.Value + "\n" :
null;
TextArea1.Value += Checkbox3.Checked == true ? " " + Checkbox3.Value + "\n" :
null;
TextArea1.Value += Checkbox4.Checked == true ? " " + Checkbox4.Value + "\n" :
null;
TextArea1.Value += Checkbox5.Checked == true ? " " + Checkbox5.Value + "\n" :
null;
}
}
7° Guarde su proyecto.
8° Pulse Ctrl + F5 para ejecutar su aplicación y debe aparecer una pantalla como muestra
la próxima imagen. Observe como los datos seleccionados por el usuario, se reflejan en el
textarea de HTML.
Figura 6. 24
9° Vamos a probar el formulario que es una simulación de encuesta en los estados de
New England en Estados Unidos. En Estado, seleccione Coneccticut.
10° En Nombre de ciudad escribe: Bloomfield.
11° Seleccione Democrático y luego active todas las casillas de verificación.
12° Clic en el botón Send Data (Enviar datos). Observe el resultado:
Figura 6. 25
Una de las características que usted pueda tener que preguntarse es el empleo de un
boton de tipo “submit” para hacer que un boton reset HTML normalmente haría, limpiar
todo el formulario.
Esto no se ejecuta en el servidor, que podría ser cierto. Sin embargo, el tipo reset no es
reconocido por C# u operaciones del lado del servidor. Asi mismo, necesita cambiar el
tipo “enviar”, y usted tiene que escribir el código del reset en C# para limpiar todo el
formulario. En esta aplicación en particular usted puede ver como cinco de los diferentes
controles HTML son limpiados.
Para completar este capitulo, usted puede haver notado que otros forms HTML que están
disponibles no han sido tratados; ya sea porque su uso es una característica común con
los forms descritos en este capitulo. Si usted está familiarizado con forms HTML, puede
ver como es fácil adaptarse a usarlo con ASP.NET y C#. En otras palabras, ASP.NET no
es tan dificil como algunos imaginan.
Capitulo 7: Controles Web Estandar
EN el capitulo anterior usted vió como utilizar una amplia gama de forms HTML para
capturar y almacenar datos temporalmente y pasar los valores a través de C# a diferentes
formularios. Usted probablemente encontrará ese capitulo utilizando forms ASP.nET para
hacerlo más sencillo o al menos tan simple porque utilizará controles Web que fueron
construidas específicamente para usarlos en ASP.NET en conjunción con C#. (“Controles
Web form” es el termino oficial de Microsoft, pero “Web controls” es un termino menos
incomodo) Por ejemplo, en lugar de tener el código a mano del controlador de eventos
para un control web estándar Button, puede usar Visual Studio 2008 a fin de que todo lo
que necesite hacer es un doble clic en el Button en la vista Diseño para generar un
controlador de evento en la clase parcial de C#.
En el trabajo con los controles Web, encontrará que las propiedades son muy
enriquecidas que los atributos disponibles en los forms de HTML. Como resultado, usted
puede hacer más con un control Web que con un form HTML. Sin embargo, usted debería
encontrar el procedimiento para enviar datos desde un lugar a otro de manera similar, asi
que lo que usted aprendió en el uso de los forms de HTML puede ser aplicado a controles
Web de ASP.NET.
7.1 Entrada de Datos
Esta sección examina los principales controles Web estándar cuya principal misión es
recibir la entrada de usuarios. Estos controles son escen cialmente controles UI, y en la
mayoría de los aspectos ellos no son diferentes de los forms HTML discutidos en el
capitulo anterior. Se incluyen los siguientes controles Web.







TextBox
CheckBOx
RadioButton
DropDownList
ListBox
RadioButtonList
CheckBoxList
Todos estos controles tienen un anfitrión de propiedades; por ejemplo, vamos a tomar
vitazo cercano a como utilizar las propiedades asociadas con el TextBox. Cuando
piensa en TextBox, usted puede ver como aplicar propiedades a diferentes controles
entrada de datos. Es más, veremos como el mismo control puede ser usado en mas
una sola manera, simplemente cambiando las propiedades.
un
se
de
de
7.2 Control TextBox para la Entrada de datos
Para empezar, tomaremos un vistazo a las diferentes propiedades del control TextBox
organizados por categorías. Estas categorías pueden rápidamente decirle que tipo de
funcionalidad puede añadir a su control.
1° Abrir Visual Studio 2008.
2° Clic en el menú Archivo, señale Nuevo y clic en Sitio Web.
3° Escribe como nombre del proyecto EntradaDatos.
Figura 7. 1
4° Establezca el editor en el modo Código.
5° Active el Cuadro de herramienta de ASP.NET.
6° Arrastre el control TextBox al editor y coloque dentro del contenedor <div>.
Figura 7. 2
7° Seleccione la parte TextBox del código y abra la ventana Propiedades.
8° En la ventana Propiedades, clic en el icono Por categorías si es que aún no esté activo.
Figura 7. 3
Ahora está todo establecido para trabajar con el control TextBox y sus propiedades.
Organizando las tareas del control en categorías, le permite trabajar con más eficiencia.
Usted podrá ver las siguientes categorías.






Accesibilidad
Apariencia
Comportamiento
Datos
Diseño
Varios
Dependiendo de la categoría que necesite, puede tener la ventana Propiedades enfocada
para alternar entre el signo más (+) y menos (-) al lado de cada nombre de categoría, de
modo que solo los que vas a utilizar se expanden (tiene mostrado el signo menos (-). Las
categorías Apariencia y el Comportamiento tienen la mayoría de opciones de
propiedades, de modo que serán usados para ilustrar como trabaja con las propiedades
de ASP.NET.
7.2.1 Apariencia
Cierre todas las categorías en la ventana Propiedades del TextBox exepto Apariencia.
(“Apariencia” tendrá un signo menos (-) al lado, y los otros tendrán un signo más) Usted
verá varias diferentes opciones disponibles en la ventana Propiedades como lo muestra la
siguiente figura:
Figura 7. 4
Mientras la palabra clave TextBox en la línea 12 es seleccionada, será capaz de ver las
propiedades del TextBox en la ventana Propiedades. Usted puede, ver y cambiar las
propiedades que se muestran en el código desde ese lugar.
Para comenzar a hacer cambios, seleccione la propiedad BackColor en la ventana
Propiedades y escribe:
#FFFF80
Figura 7. 5
Pulse la tecla Tab y verá como se aumenta código al lado de la línea 12 del código del
control TextBox.
Figura 7. 6
El valor Hexadecimal dan con exactitud el color que quiera de una elección de más de un
millón de combinaciones. Sin embargo, siempre que abra una propiedad de color, un
pequeño icono aparece a la derecha de la propiedad como muestra la siguiente figura:
Figura 7. 7
Ademas de cambiar el valor de la propiedade BackCOlor, cambie lo siguiente asi:
Propiedad
BorderCOlor
BorderWidth
Font-Names
ForeCOlor
Valor
#CC0000
1
Arial Black
#4C1900
Figura 7. 8
Una vez finalizado, pruebe su proyecto. Deberia ver su control TextBox como
dibujado.Cuando ingrese texto, verá la fuente en negrita Arial Black en lugar de su valor
predeterminado.
Figura 7. 9
Usando Visual Studio 2008 puede también ver el cambio de apariencia en la vista Diseño.
Sin embargo, cuando selecciona un control Web, verá que en lugar de ver el color
seleccionado en la ventana Propiedades, verá el cambio de color se produce cuando un
objeto es seleccionado. Basta con un solo clic fuera del control Web y verás los colores
reales.
La mejor forma para acostumbrarse a la apariencia del control TextBox es
experimentando con este. Es bastante simple su uso, pero incluso con simples
herramientas, probando elementos no deseados ahora, evita sorpresas más adelante.
Nota: La creación de esquemas de colo, los diseñadores suelen utilizar CSS y que
método es favorable para constancia del diseño del sitio. La propiedad CssClass requiere
un CSS. Sin embargo, por más pequeña que sea la aplicación, puede hacer cambios a un
control y usar los mismos valores de propiedad para otros controles sin CSS.
Descargar