aspnet parte 1

217
Capitulo 1: Comprender Microsoft Web Technologies

Upload: carlos2003557

Post on 30-Jul-2015

122 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aspnet Parte 1

Capitulo 1: Comprender Microsoft Web Technologies

Page 2: Aspnet Parte 1

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.

Page 3: Aspnet Parte 1

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

Page 4: Aspnet Parte 1

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.

Page 5: Aspnet Parte 1

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 Web 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.

Page 6: Aspnet Parte 1

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.

Page 7: Aspnet Parte 1

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

Page 8: Aspnet Parte 1

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-to-

server 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.

Page 9: Aspnet Parte 1

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

Page 10: Aspnet Parte 1

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.

Page 11: Aspnet Parte 1

Introducción a ASP.NET 3.5

Page 12: Aspnet Parte 1

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

Page 13: Aspnet Parte 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.

Page 14: Aspnet Parte 1

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.

Page 15: Aspnet Parte 1

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.

Page 16: Aspnet Parte 1

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.

Page 17: Aspnet Parte 1

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.

Page 18: Aspnet Parte 1

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.

Page 19: Aspnet Parte 1

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.

Page 20: Aspnet Parte 1

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.

Page 21: Aspnet Parte 1

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">

Page 22: Aspnet Parte 1

<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.

Page 23: Aspnet Parte 1

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!";

}

}

Page 24: Aspnet Parte 1

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

Page 25: Aspnet Parte 1

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.

Page 26: Aspnet Parte 1

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 27: Aspnet Parte 1

<%@ 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.

Page 28: Aspnet Parte 1

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.

Page 29: Aspnet Parte 1

Figura 2. 8

3° En el panel de control, pulse clic en Vista clásica.

Page 30: Aspnet Parte 1

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.

Page 31: Aspnet Parte 1

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

Page 32: Aspnet Parte 1

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.

Page 33: Aspnet Parte 1

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

Page 34: Aspnet Parte 1

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.

Page 35: Aspnet Parte 1

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.

Page 36: Aspnet Parte 1

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.

Page 37: Aspnet Parte 1

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.

Page 38: Aspnet Parte 1

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.

Page 39: Aspnet Parte 1

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.

Page 40: Aspnet Parte 1

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#.

Page 41: Aspnet Parte 1

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.

Page 42: Aspnet Parte 1

Capítulo 3:ASP.NET 3.5, Herramientas y entornos de desarrollo

Page 43: Aspnet Parte 1

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

Page 44: Aspnet Parte 1

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.

Page 45: Aspnet Parte 1

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.

Page 46: Aspnet Parte 1

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

Page 47: Aspnet Parte 1

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

Page 48: Aspnet Parte 1

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

Page 49: Aspnet Parte 1

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

Page 50: Aspnet Parte 1

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

Page 51: Aspnet Parte 1

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.

Page 52: Aspnet Parte 1

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.

Page 53: Aspnet Parte 1

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.

Page 54: Aspnet Parte 1

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

Page 55: Aspnet Parte 1

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

Page 56: Aspnet Parte 1

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.

Page 57: Aspnet Parte 1

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

Page 58: Aspnet Parte 1

Por lo tanto, los archivos Default.aspx y Default.aspx.cs pueden ser vistos 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

Page 59: Aspnet Parte 1

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.

Page 60: Aspnet Parte 1

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.

Page 61: Aspnet Parte 1

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.

Page 62: Aspnet Parte 1

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

Page 63: Aspnet Parte 1

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">

Page 64: Aspnet Parte 1

<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" %>

Page 65: Aspnet Parte 1

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

{

Page 66: Aspnet Parte 1

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

Page 67: Aspnet Parte 1

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.

Page 68: Aspnet Parte 1

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.

Page 69: Aspnet Parte 1

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

Page 70: Aspnet Parte 1

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

Page 71: Aspnet Parte 1

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

Page 72: Aspnet Parte 1

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

Page 73: Aspnet Parte 1

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.

Page 74: Aspnet Parte 1

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

Page 75: Aspnet Parte 1

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

Page 76: Aspnet Parte 1

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.

Page 77: Aspnet Parte 1

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.

Page 78: Aspnet Parte 1

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

Page 79: Aspnet Parte 1

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

Page 80: Aspnet Parte 1

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.

Page 81: Aspnet Parte 1

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.

Page 82: Aspnet Parte 1

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.

Page 83: Aspnet Parte 1

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.

Page 84: Aspnet Parte 1

Figura 3. 51

8° Ahora debemos esperar que se complete la descarga de algunos programas e instale

Visual Web Developer 2008 Express Edition.

Page 85: Aspnet Parte 1

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.

Page 86: Aspnet Parte 1

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

Page 87: Aspnet Parte 1

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

Page 88: Aspnet Parte 1

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.

Page 89: Aspnet Parte 1

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

Page 90: Aspnet Parte 1

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.

Page 91: Aspnet Parte 1

Capítulo 4: C# y ASP.NET 3.5

Page 92: Aspnet Parte 1

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

Page 93: Aspnet Parte 1

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:

Page 94: Aspnet Parte 1

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 los 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;

Page 95: Aspnet Parte 1

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;

Page 96: Aspnet Parte 1

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.

Page 97: Aspnet Parte 1

Tipo C# Tipo .NET Descripción Bytes (8 bits)

byte Byte Enteros sin signo (0-255) 1

bool Boolean Verdadero o falso 1

short Int16 Enteros con signo de -32,768 a 32767 2

ushort Ulnt16 Enteros sin signo de 0 a 65,535 2

long Int64 Enteros con signo de -9 ,223,372,036,854,775,808 a 9,223,372,036,854,775, 807

8

ulong Ulnt64 Enteros sin signo de 0 a 18,446,744,073,709,551,615

8

int Int32 Enteros con signo de –2,147,483,648 a 2,147,483,647

4

uint Ulnt32 Enteros sin signo de 0 a 4,294,967,295 4

float Single 1.5 × 10−45 to 3.4 × 1038, 7-digitos de precisión (requiere f o F al final del literal)

4

double Double 5.0 × 10−324 to 1.7 × 10308, 15-digitos de precisión (requiere d o D al final del literal))

8

decimal Decimal 1.0 × 10−28 to 7.9 × 1028, 28-digitos de precisión (Requiere m o M al final del literal)

12

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

Page 98: Aspnet Parte 1

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);

}

}

Page 99: Aspnet Parte 1

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);

Page 100: Aspnet Parte 1

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 contenedor 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

Page 101: Aspnet Parte 1

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>

Page 102: Aspnet Parte 1

</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

Page 103: Aspnet Parte 1

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)

Page 104: Aspnet Parte 1

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" />

Page 105: Aspnet Parte 1

</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 texto. 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…

Page 106: Aspnet Parte 1

//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:

Page 107: Aspnet Parte 1

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

Page 108: Aspnet Parte 1

Símbolo 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.

Operadores compuestos

+ = Toma el valor actual y suma el valor asignado

- = Toma el valor actual y hace una resta del valor asignado

* = Toma el valor actual y lo multiplica por el valor asignado

/ = Toma el valor actual y lo divide por el valor asignado

% = Toma el valor 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);

Page 109: Aspnet Parte 1

}

}

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);

Page 110: Aspnet Parte 1

//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:

Page 111: Aspnet Parte 1

Resultado Significado

-1 La segunda cadenas es superior que la primera cadena.

1

La primera cadena es superior que la segunda cadena.

0 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);

Page 112: Aspnet Parte 1

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:

Page 113: Aspnet Parte 1

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

}

Page 114: Aspnet Parte 1

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>

Page 115: Aspnet Parte 1

</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.

Page 116: Aspnet Parte 1

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.

Page 117: Aspnet Parte 1

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…

Page 118: Aspnet Parte 1

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"/>

&nbsp;Enter first string</div>

<p/>

<asp:TextBox ID="TextBox2" runat="server"/>

Enter second string

<p/>

<asp:Button ID="Compare"

runat="server"

Page 119: Aspnet Parte 1

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:

Page 120: Aspnet Parte 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

Page 121: Aspnet Parte 1

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.

Page 122: Aspnet Parte 1

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.

Page 123: Aspnet Parte 1

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;

Page 124: Aspnet Parte 1

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.

Page 125: Aspnet Parte 1

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

Page 126: Aspnet Parte 1

}

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>

Page 127: Aspnet Parte 1

<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)

Page 128: Aspnet Parte 1

{

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.

Page 129: Aspnet Parte 1

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;

Page 130: Aspnet Parte 1

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.

Page 131: Aspnet Parte 1

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);

Page 132: Aspnet Parte 1

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;

Page 133: Aspnet Parte 1

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

Page 134: Aspnet Parte 1

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.

Page 135: Aspnet Parte 1

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:

Page 136: Aspnet Parte 1

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 Uso

AsReadOnly Devuelve una capa de sólo lectura para el conjunto especificado.

BinarySearch Busca algoritmos binarios utilizados para encontrar elementos.

Clear Restablece todos los elementos en 0 o nulo.

ConvertAll El tipo de array es cambiado (por ejemplo, convierte tipo entero a cadena.

Copy Copia rango de elementos desde un array a otro.

CopyTo Como el método Copy(), pero copia todos los elementos.

CreateInstance Nueva instancia de clase inicializada Array.

Find Metodo de búsqueda para encontrar elementos que coincidadn con los criterios de búsqueda. Encuentra primera instancia.

Page 137: Aspnet Parte 1

FindAll Como Find(), exepto que encuentra todos los elementos.

GetType Se utiliza para obtener el tipo de instancia actual.

GetValue Se utiliza para obtener el elemento valor de array.

IndexOf Es un array unidimensional devuelve el índice de la primera ocurrencia de valor.

LastIndexOf Es un array unidimensional devuelve el índice de la ultima ocurrencia de valor.

Resize Cambia el tamaño de un array para especificar un nuevo tamaño

Reverse Invierte el orden de los elementos en un array.

SetValue Establece un valor para un determinado elemento en un array.

Sort 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.

Page 138: Aspnet Parte 1

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

{

Page 139: Aspnet Parte 1

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.

Page 140: Aspnet Parte 1

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.

Page 141: Aspnet Parte 1

Capitulo 5: Hacer más con C# y ASP.NET

Page 142: Aspnet Parte 1

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.

Page 143: Aspnet Parte 1

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

Page 144: Aspnet Parte 1

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

Page 145: Aspnet Parte 1

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.

Page 146: Aspnet Parte 1

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:

Page 147: Aspnet Parte 1

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.

Page 148: Aspnet Parte 1

5.4 ASP.NET EventWork.aspx

<%@ 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>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>

Page 149: Aspnet Parte 1

<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.

Page 150: Aspnet Parte 1

<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 += "*";

}

Page 151: Aspnet Parte 1

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:

Page 152: Aspnet Parte 1

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.

Page 153: Aspnet Parte 1

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";

Page 154: Aspnet Parte 1

}

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;

Page 155: Aspnet Parte 1

}

}

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#" 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>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>

Page 156: Aspnet Parte 1

</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.

Page 157: Aspnet Parte 1

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:

Page 158: Aspnet Parte 1

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;

Page 159: Aspnet Parte 1

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.

Page 160: Aspnet Parte 1

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.

Page 161: Aspnet Parte 1

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)

Page 162: Aspnet Parte 1

{

}

}

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.

Page 163: Aspnet Parte 1

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….

Page 164: Aspnet Parte 1

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

Page 165: Aspnet Parte 1

6° Ahora añadiremos el siguiente código:

5.10.1 ASP.NET Iface.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Iface.aspx.cs"

Inherits="Iface" %>

<!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>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.

Page 166: Aspnet Parte 1

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();

Page 167: Aspnet Parte 1

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

Page 168: Aspnet Parte 1

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.

Page 169: Aspnet Parte 1

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.

Page 170: Aspnet Parte 1

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";

}

}

Page 171: Aspnet Parte 1

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.

Page 172: Aspnet Parte 1

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.

Page 173: Aspnet Parte 1

Capitulo 6: Formularios HTML

Page 174: Aspnet Parte 1

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.

Page 175: Aspnet Parte 1

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

Page 176: Aspnet Parte 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>

Page 177: Aspnet Parte 1

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

Page 178: Aspnet Parte 1

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.

Page 179: Aspnet Parte 1

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#" 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">

Page 180: Aspnet Parte 1

<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;

Page 181: Aspnet Parte 1

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:

Page 182: Aspnet Parte 1

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.

Page 183: Aspnet Parte 1

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).

Page 184: Aspnet Parte 1

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() {

}

Page 185: Aspnet Parte 1

// ]]>

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#" AutoEventWireup="true" CodeFile="Junk.aspx.cs"

Inherits="Junk" %>

<!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>Página sin título</title>

<script language="javascript" type="text/javascript">

// <!CDATA[

function Button1_onclick() {

}

// ]]>

</script>

</head>

<body>

<form id="form1" runat="server">

Page 186: Aspnet Parte 1

<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.

Page 187: Aspnet Parte 1

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>

Page 188: Aspnet Parte 1

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

Page 189: Aspnet Parte 1

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#" 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>Página sin título</title>

</head>

<body>

<form id="form1" runat="server">

<div>

Page 190: Aspnet Parte 1

<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;

Page 191: Aspnet Parte 1

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

Page 192: Aspnet Parte 1

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…

Page 193: Aspnet Parte 1

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

Page 194: Aspnet Parte 1

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,

Page 195: Aspnet Parte 1

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.

Page 196: Aspnet Parte 1

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

Page 197: Aspnet Parte 1

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"/>

Page 198: Aspnet Parte 1

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

Page 199: Aspnet Parte 1

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:

Page 200: Aspnet Parte 1

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.

Page 201: Aspnet Parte 1

Figura 6. 22

4° Pulse clic en el Explorador de soluciones.

Figura 6. 23

Page 202: Aspnet Parte 1

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#" AutoEventWireup="true" CodeFile="Poll.aspx.cs"

Inherits="Poll" %>

<!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>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>

Page 203: Aspnet Parte 1

<option>Vermont</option>

</select>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<!-- 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" name="party" value="Republicano" runat="server"

/>Republicano<br />

<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" value="Relaciones

Internacionales" />Relaciones Internacionales<br />

<input id="Checkbox4" type="checkbox" runat="server" value="Reforma Electoral"

/>Reforma electoral <br />

<input id="Checkbox5" type="checkbox" runat="server" value="Tecnología"

/>Tecnología<p />

<!-- Buttons -->

<input id="Reset1" type="submit" value="Clear" runat="server"

OnServerClick="Reset_Click" />

Page 204: Aspnet Parte 1

<input id="Submit1" type="submit" value="Send Data" runat="server"

OnServerClick="Submit_Click" />

<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

{

Page 205: Aspnet Parte 1

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)

Page 206: Aspnet Parte 1

{

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;

}

Page 207: Aspnet Parte 1

}

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:

Page 208: Aspnet Parte 1

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

Page 209: Aspnet Parte 1

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.

Page 210: Aspnet Parte 1

Capitulo 7: Controles Web Estandar

Page 211: Aspnet Parte 1

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 un

vitazo cercano a como utilizar las propiedades asociadas con el TextBox. Cuando se

piensa en TextBox, usted puede ver como aplicar propiedades a diferentes controles de

entrada de datos. Es más, veremos como el mismo control puede ser usado en mas de

una sola manera, simplemente cambiando las propiedades.

Page 212: Aspnet Parte 1

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>.

Page 213: Aspnet Parte 1

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.

Page 214: Aspnet Parte 1

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

Page 215: Aspnet Parte 1

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:

Page 216: Aspnet Parte 1

Figura 7. 7

Ademas de cambiar el valor de la propiedade BackCOlor, cambie lo siguiente asi:

Propiedad Valor

BorderCOlor #CC0000

BorderWidth 1

Font-Names Arial Black

ForeCOlor #4C1900

Figura 7. 8

Page 217: Aspnet Parte 1

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.