Sunteți pe pagina 1din 59

Agenda

„ Anatomía de una aplicación ASP.NET


„ Clases de control HTML
„ La clase pagina
„ Configuración ASP.NET
Anatomía de una aplicación ASP.NET

ƒ Cada aplicación ASP.NET comparte un


conjunto común de recursos y
configuraciones que se ejecuta dentro de un
dominio de aplicación separado.
ƒ Los dominios de aplicación están aislados en
áreas de memoria, de este modo aseguran
que si alguna aplicación web causa un error
fatal, no afectará a otra aplicación.
Anatomía de una aplicación ASP.NET
Tipos de archivos ASP.NET

Archivo Descripción
nombre.aspx Son las paginas web
nombre.ascx Son los controles de usuario
nombre.asmx Son los servicios web
web.config Archivo XML con configuraciones de
seguridad, gestión de memoria,.
global.asax Archivo de aplicación global.
nombre.cs Archivo con código C#.
Nombre.sln Solución del proyecto.
Controles de servidor

ƒ ASP.NET provee dos controles servidor:


à Controles de servidor HTML: Son equivalentes a los
elementos estándar HTML.
à Controles Web: Son objetos enriquecidos con
propiedades y detalles de estilo y formatos (listas,
tablas, etc…)
Controles de servidor HTML
Caso de estudio: Conversor de monedas
Controles de servidor HTML

ƒ Cuando se pega el contenido en HTML, este


debería sobrescribir todo lo correspondiente al
código HTML, excepto la directiva de pagina.
ƒ La directiva de pagina da información básica de
ASP.NET acerca de cómo compilar la pagina.
Controles de servidor HTML

ƒ Se necesita añadir el atributo runat="server" a


cada etiqueta que se desea transformar en un
control servidor.
ƒ Se debería añadir también un atributo id a
cada control que se necesite interactuar con el
código.
ƒ El atributo id asigna el nombre único que se
usará para referirse al control en el código.
Controles de servidor HTML
Las clases de control HTML

ƒ Todos los controles HTML de servidor se


definen en el espacio de nombres
System.Web.UI.HtmlControls.
ƒ Cada control tiene una clase separada.
Las clases de control HTML

Nombre de clase Etiqueta HTML


HtmlAnchor <a>
HtmlForm <form>
HtmlImage <img>
HtmlInputButton <input type="button">
HtmlInputSubmit <input type="submit">
HtmlInputCheckBox <input type="checkbox">
HtmlInputRadioButton <input type="radio">
HtmlGenericControl Cualquier otro elemento
HTML
Las clases de control HTML
Las clases de control HTML

ƒ Para agregar funcionalidad a la aplicación, se


necesita añadir código ASP.NET.
ƒ Los Web forms son basados en eventos, lo
que significa que cada pieza de código actúa
en respuesta a un evento.
ƒ En el ejemplo el evento ocurre cuando el
usuario hace clic en el botón submit.
ƒ El HtmlInputButton permite que reaccione a
esta acción manejando el evento
ServerClick.
Las clases de control HTML

ƒ El ejemplo tiene cuatro controles de servidor:


à Un formulario (HtmlForm). Este es el único control
que no se necesita acceder en el código.
à Una caja de texto de entrada denominada US
(HtmlInputText).
à Un botón submit denominado Convert
(HtmlInputButton).
à Una etiqueta <div> denominada Result
(HtmlGenericControl).
Las clases de control HTML

<body>
<form method="post" runat="server">
<div>
Convertir:&nbsp;
<input type="text" id="US" runat = "server"> &nbsp; U.S.
dolares a soles;
<br /><br />
<input type="submit" id="Convert" value="OK" runat="server"
OnServerClick = "Convert_ServerClick">
<br /><br />
<div style="font-weight: bold" id="Result" runat="server">
</div>
</form>
</body>
Las clases de control HTML
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Convert_ServerClick(Object sender, EventArgs e)
{
decimal USMonto = decimal.Parse(US.Value);
decimal solesMonto = USMonto * 2.8M;
Result.InnerText = USMonto.ToString() + " US dolares ";
Result.InnerText += solesMonto.ToString() + " soles";
}
}
Las clases de control HTML
Detrás de escena del programa ASP.NET

1. La petición de la pagina se envía web server.


2. El web server determina que archivo .aspx se
ha registrado con ASP.NET y lo pasa al
proceso trabajador ASP.NET.
3. Si es la primera vez que la pagina realiza su
petición, ASP.NET automáticamente crea el
dominio de aplicación.
Detrás de escena del programa ASP.NET

4. Si el archivo .aspx. Nunca ha sido ejecutado,


ASP.NET lo compila y almacena (cache)
5. El archivo compilado actúa como un programa
en miniatura. Este empieza lanzando eventos
(Page.Load).
6. Cuando el código finaliza, ASP.NET pregunta a
cada control en la pagina web para colocarlo
dentro del correspondiente etiqueta HTML.
7. La pagina final se envía al usuario, y la aplicación
finaliza.
Mejorando la aplicación

ƒ Se va a agregar múltiples opciones de cambio


de monedas.
ƒ Para ello se necesita un control lista drop‐
down.
ƒ Una lista drop‐down se representa por un
elemento <select> que contiene uno o mas
elementos <option>.
ƒ Cada elemento <option> corresponde a un
elemento en la lista.
Mejorando la aplicación

Convertir:&nbsp;
<input type="text" id="US" runat = "server"> &nbsp;
U.S. dolares a: &nbsp;

<select id = "Monedas" runat="server" > </select>

<br /><br />


Mejorando la aplicación

protected void Page_Load(object sender, EventArgs e)


{
if (this.IsPostBack == false)
{
Monedas.Items.Add("Soles");
Monedas.Items.Add("Euro");
Monedas.Items.Add("Yen Japones");
Monedas.Items.Add("Dolar Canadiense");
}
}
Mejorando la aplicación
Almacenando información en la
lista
ƒ En HTML la lista también proporciona un
atributo que se puede usar para almacenar
información adicional.
ƒ Para colocar una etiqueta con valor, se
necesita crear un objeto ListItem que accede
al constructor que permite especificar el texto
y el valor al mismo tiempo que se creo.
Almacenando información en la
lista
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack == false)
{
Monedas.Items.Add(new ListItem("Soles", "2,8"));
Monedas.Items.Add(new ListItem("Euro", "0,85"));
Monedas.Items.Add(new ListItem("Yen Japones", "110,33"));
Monedas.Items.Add(new ListItem("Dolar Canadiense", "1,2"));
}
}
Almacenando información en la
lista
protected void Convert_ServerClick(Object sender, EventArgs e)
{
decimal monto = decimal.Parse(US.Value);

ListItem item = Monedas.Items[Monedas.SelectedIndex];

decimal nuevoMonto = monto * Decimal.Parse(item.Value);


Result.InnerText = monto.ToString() + " US dolares =";
Result.InnerText += nuevoMonto.ToString() + item.Text;
}
Almacenando información en la
lista
Agregando imágenes enlazadas

ƒ Se va a mostrar en un grafico para cada


conversor de moneda.

ƒ Para proporcionar esta característica, el


programa necesita de un control botón
<input type="submit“> y un control imagen
<img>.
Agregando imágenes enlazadas

<div>
//…
<input type="submit" id="Convert" value="OK" runat="server"
OnServerClick = "Convert_ServerClick">

<input type="submit" value="Mostrar Figura" id="MostrarFigura"


OnServerClick = "MostrarFigura_ServerClick" runat="server">
<br /><br />
<img id="Figura" runat="server" >

<div style="font‐weight: bold" id="Result" runat="server">


</div>
Agregando imágenes enlazadas

ƒ Como la imagen no se refiere a una figura


cuando se carga, hay que ocultarlo.
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack == false)
{
Monedas.Items.Add(new ListItem("Soles", "2,8"));
Monedas.Items.Add(new ListItem("Euro", "0,85"));
Monedas.Items.Add(new ListItem("Yen Japones", "110,33"));
Monedas.Items.Add(new ListItem("Dolar Canadiense", "1,2"));
}
Figura.Visible = false;
}
Agregando imágenes enlazadas

protected void MostrarFigura_ServerClick(Object


sender, EventArgs e)
{
Figura.Src = "Pic" + Monedas.SelectedIndex.ToString() + ".png";
Figura.Alt = "Figura de la Moneda";
Figura.Visible = true;
}
Agregando imágenes enlazadas
Fijando estilos

ƒ Cada control HTML también proporciona acceso


a atributos de estilos CSS a través de su
colección Style.
ƒ Para usar esta colección, se necesita especificar
el nombre del atributo de estilo CSS (Cascading
Style Sheets) y el valor que se desea asignar a
este.
ƒ La sintaxis básica es:
ControlName.Style [“Nombredeatributo”] =
“Valordeatributo”;
Fijando estilos

ƒ Por ejemplo se podría enfatizar con un color


rojo la entrada indebida de un valor.
protected void Convert_ServerClick(Object sender, EventArgs e)
{
decimal monto = decimal.Parse(US.Value);
if (monto < 0)
{
Result.Style["color"] = "Red";
Result.InnerText = "Ingrese un valor positivo";
}
else
{
Result.Style["color"] = "Blue";
ListItem item = Monedas.Items[Monedas.SelectedIndex];

decimal nuevoMonto = monto * Decimal.Parse(item.Value);


Result.InnerText = monto.ToString() + " US dolares =";
Result.InnerText += nuevoMonto.ToString() + item.Text;
}
}
Fijando estilos
Una mirada profunda a las clases
de control HTML
Eventos HTML

ƒ Los controles de servidor HTML también


proporciona uno de dos posibles eventos:
à ServerClick: es simplemente un click que se
procesa en el lado del servidor.
à ServerChange: responde cuando un cambio se
ha hecho a un control texto o selección.
Eventos HTML
Eventos Avanzados con el control
HtmlInputImage
ƒ Los eventos estándar de .NET, indican que cada
evento debería pasar dos parámetros de
información.
ƒ El primer parámetro identifica el objeto (en este
caso, el control) que dispara el evento.
ƒ El segundo parámetro es un objeto especial que
puede incluir información adicional acerca del
evento.
Eventos Avanzados con el control
HtmlInputImage
ƒ De hecho, solo un control de servidor HTML
envía información adicional:
HtmlInputImage
ƒ Este envía un objeto ImageClickEventArgs
que da las coordenadas X y Y representando
la ubicación donde la imagen se ha hecho
click.
Eventos Avanzados con el control
HtmlInputImage
Eventos Avanzados con el control
HtmlInputImage
La clase base HtmlControl

ƒ Cada control HTML hereda de la clase base


HtmlControl.
ƒ Esto significa que cada control HTML
soportará un conjunto básico de propiedades.
La clase base HtmlControl

Propiedades Descripción
Attributes Atributos y valores de las etiquetas.
Controls Todos los controles que pueden contener.
Disabled Deshabilita el control .
Page Referencia a la pagina web que tiene el
control.
Parent Referencia al padre del control.
Style Estilos CSS para la pagina.
TagName Indica el nombre de la etiqueta HTML.
Visible Oculta o muestra un control
La clase HtmlContainerControl

ƒ Cualquier control HTML que pueda contener


otros elementos HTML hereda del control
HtmlContainer.
ƒ Por ejemplo: <a>, <form>, y <div> pueden
contener otros elementos HTML .
ƒ De otro lado, <img> y <input> no pueden
contener otros elementos.
ƒ Entonces las clases HtmlAnchor, HtmlForm, y
HtmlGenericControl heredan de
HtmlContainerControl, mientras que HtmlImage
y HtmlInput no.
La clase HtmlContainerControl

Propiedades Descripción
InnerHtml Contenido HTML entre <>
InnerText Texto contenido entre <>
La clase HtmlInputControl

ƒ Este control define algunas propiedades que son


comunes para todos los controles HTML que
están basados en la etiqueta <input> :
à <input type="text">,
à <input type="submit">, y
à <input type="file">.

Propiedades Descripción
Type Provee el tipo de control de entrada
Value Retorna el contenido del control como string
La clase Page

ƒ Cada pagina web es una clase personalizada


que hereda de System.Web.UI.Page.
ƒ Por herencia de esta clase, la clase pagina web
adquiere un numero de propiedades que el
código puede usar.
La clase Page
Propiedades Descripción
Application y Esta colección mantiene el estado de
Session información en el servidor.
Cache Almacena objetos para reusar en otras paginas
o para otros clientes.
Controls Todos los controles contenidos en la pagina
web.
IsPostBack Indica si es la primera vez que la pagina se ha
ejecutado (false)
Request Objeto HttpRequest que contiene información
sobre la actual petición de la web.
Response Objeto HttpResponse que permite fijar las
respuestas web o redirecciona al usuario a otra
pagina web.
Colección de controles

ƒ Se puede usar la colección de controles para


añadir un control dinámico.

HtmlButton ctrl = new HtmlButton();


ctrl.InnerText = "Boton dinamico";
ctrl.ID = "Dinamico";
this.Controls.Add(ctrl);
La clase HttpRequest

ƒ La clase HttpRequest encapsula toda la


información relacionada a la petición del
cliente para una pagina web.

Propiedades Descripción
ApplicationPath y Obtiene el directorio virtual URL, el directorio
PhysicalPath físico real.
Browser Tiene un enlace a las características del
navegador como ActiveX, cookies, etc.
Cookies Obtiene los cookies enviados con la petición
La clase HttpResponse

ƒ La clase HttpResponse permite enviar


información directamente al cliente.
Propiedades Descripción
BufferOutput Por omisión es verdadero, la pagina no envia
al cliente hasta que este completamente listo.

Write(), Permiten escribir texto o contenido binario


BinaryWrite(), directamente al flujo de respuesta o incluso a
un archivo.
y WriteFile()
Redirect() Transfiere el usuario a otra pagina o website.
La clase HttpResponse
Caracteres especiales
Configuración ASP.NET

ƒ Cada web server inicia con algunas


configuraciones básicas que están definidas en
dos archivos
Configuración ASP.NET
Resumen

ƒ La creación de aplicación de sitios web en


ASP.NET.
ƒ El uso de los controles de servidor HTML.
ƒ La pagina HTML final esta ubicada en el archivo
.aspx
ƒ Configuración ASP.NET.
Practica

1. ¿Cuál es la secuencia de pasos cuando se envia


una petición de la pagina al web server?
2. Explique en que consiste la clase
HtmlContainerControl, mencione 2 clases
3. Explique en que consiste la clase
HtmlInputControl, mencione 2 clases
4. ¿Qué funciones cumple los ficheros
Machine.config y web.config?

S-ar putea să vă placă și