Vous êtes sur la page 1sur 14

Introduccin a ASP.

NET
ASP.NET es framework para programar aplicaciones web, de un modo similar al que se
programan las aplicaciones windows. El componente principal son los Web Forms
(formularios web) que permiten, entre otras cosas, separar la interfaz del usuario de la
funcionalidad de la aplicacin.
ASP.NET es el framework de programacin web dentro de .NET que permite
desarrollar aplicaciones Web con un modelo similar al utilizado para aplicaciones
Windows. Su componente fundamental es el WebForm.
Permite crear pginas Web dinmicas que pueden acceder a recursos del servidor, con
independencia del cliente (navegador, S.O., dispositivo fsico, etc.). Se permite utilizar
cualquier lenguaje .NET. y permite desarrollar Servicios Web XML.
Componentes de una aplicacin ASP.Net (ver grafico filmina 9)

WebForms (Formularios Web): Uno o ms archivos con extensin .aspx.


Archivos Code-Behind: Archivos asociados a WebForms que contienen cdigo
del lado del servidor (Ej. VB.NET, C#, etc.).
Archivos de configuracin con formato XML
o Un archivo Web.config por c/aplicacin.
o Un nico archivo Machine.config por servidor.
Global.asax: Eventos a nivel de aplicacin.
Directorio BIN
o Contiene el assembly de la aplicacin (Ej.: MiAplic.dll).
o Cero o ms assemblies (Componentes externos).
Enlaces a Servicios Web XML: Permiten a la aplicacin ASP.NET enviar y
recibir datos desde Servicios Web.

Servidor WEB:

Un servidor web es un sistema informtico conectado a una red, donde se


almacenan las pginas, imgenes, etc. (que forman una aplicacin web)
disponibles para ser visitadas por los usuarios de la red.

Internet Information Server (IIS), es el servidor Web de Microsoft que corre


sobre plataformas Windows. Los servicios que ofrece son: FTP, SMTP, NNTP y
HTTP/HTTPS

Las aplicaciones Web ASP.NET + IIS:

Las aplicaciones Web solo pueden existir en una ubicacin que es publicada por
IIS como un Directorio Virtual.
Directorio Virtual: es un recurso compartido identificado por un alias y que
representa una ubicacin fsica en el servidor.
http://localhost hace referencia al directorio raz del servidor web.
Por default, http://localhost apunta a C:\Inetpub\wwwroot.
VS.NET por default crea las app web bajo el directorio raz, ej. (MiAppp)
o Virtual:
http://localhost/ MiAppp

o Fsica:
C:\Inetpub\wwwroot\ MiAppp
Podemos usar IIS para definir un directorio virtual donde alojar nuestras
aplicaciones Web, diferente al predeterminado.

Estructura de las aplicaciones Web


El permetro de una aplicacin Web es determinada por su estructura de
directorios
Directorio raz, el cual contiene:
o La pgina o WebForm de inicio.
o El archivo de configuracin Web.config.
o El directorio BIN.
El permetro de la aplicacin termina en su ltimo directorio o cuando se
encuentra el directorio raz de otra aplicacin Web.
WebForm:
Es una pgina expresada en lenguaje de marcas que es compilada y ejecutada
dinmicamente en el servidor para generar la salida solicitada por el cliente
(explorador dispositivo). Tiene extensin .aspx
Controles de Servidor
Componentes que se ejecutan en el lado del servidor.
Encapsulan partes de la interface de usuarios.
Poseen el atributo runat=server.
Mantienen su estado entre postbacks al servidor ViewState.
Poseen un modelo de objetos comn: Ej.: todos tienen las propiedades Id y
Text.
Generan HTML especfico segn el browser cliente.
Tipos de Controles de servidor:
Controles de Servidor HTML

Por default, los elementos HTML no


son accesibles desde cdigo del lado
del servidor.
Agregando runat=server y el
atributo id, se convierten en Controles
de Servidor HTML.
Espacio de nombres:
System.Web.UI.HtmlControls

Controles de Servidor WEB

Conocidos como WebControls.


Solo accesibles del lado del servidor.
Muchos tipos
o Intrnsecos
o Validacin
o Ricos
o Del tipo lista de datos
No tienen una relacin 1:1 con
elementos HTML.
Espacio de nombres:
System.Web.UI.WebControls

Codigo Inline
El cdigo y el contenido en el mismo archivo.
Diferentes secciones para el cdigo y el HTML.
<%@ Page Language="C#" CodeFile="LogIn.aspx.cs" Inherits="LogIn" %>
<script runat="server">
public void btn_Click(Object s, EventArgs e)
{ ...
}
</script>
<html>
<body>
<form id="Form1" method="post" runat="server">
<asp:Button id="btn" runat="server" onclick="btn_Click"/>
</form>
</body>
</html>

Code-Behind:
Separacin del cdigo y el contenido: Los desarrolladores y los diseadores
pueden trabajar de forma independiente.
Crea archivos separados para la grfica y la lgica de la aplicacin.
Se usa la directiva @Page para unir ambos archivos.
Pre-compilacin o compilacin JIT (Just in time)
Procedimientos de evento del lado del cliente
Generalmente usado slo en controles HTML.
Interpretado por el browser del lado del cliente.
No tiene acceso a recursos del lado del servidor.
Usa <SCRIPT language=javascript o vbscript">.
Procedimientos de evento del lado del servidor

Usados en Web y HTML Controls.


El cdigo se compila y se ejecuta en el servidor.
Tiene acceso a recursos del lado del servidor.
Usa <SCRIPT language=cs" runat="server">.

Modelo de eventos del lado del servidor:

Ciclo de vida de los eventos de pgina:

Eventos de Postback:

El evento Page_Load se ejecuta en cada request


o Inicializacin de controles.
o Usar Page.IsPostBack para ejecutar lgica condicional.
o Page.IsPostBack previene el reload en cada request.

Controles ASP.Net
Todos los controles tienen varias propiedad en forma comn, entre ellas : ID
Enabled Visible ToolTip Height - Width
Casi todos los controles tienen eventos y propiedades
Control
Label

Propiedad
Text

Evento

TextBox

Text AutoPostback - MaxLength - ReadOnly TextMode [SingleLine|Multiline|Password]


ValidationGroup
Text - OnClientClick - PostBackUrl ValidationGroup
Text - OnClientClick - PostBackUrl ValidationGroup
AlternateText ImageUrl OnClientClick
PostBackUrl ValidationGroup
Text - NavigateURL
Text AutoPostback - Checked
Text GroupName AutoPostback Checked
SelectedDate
AutoPostback - Items[] - Items.Count
SelectedIndex SelectedItem - SelectedItem.Value
SelectedItem.Text
AutoPostback - Items[] - Items.Count - SelectedIndex
SelectedItem - SelectedItem.Value SelectedItem.Text

TextChanged

Button
LinkButton
ImageButton
HyperLink
CheckBox
RadioButton
Calendar
DropDownList
ListBox

Click
Click
Click
Click
CheckedChanged
CheckedChanged
SelectionChanged
SelectedIndexChanged
SelectedIndexChanged

Listbox, DropDownList

Lbx.Items.Add(Doc. Nac. Iden.);


Lbx.Items.Add(new ListItem("Doc. Nac. Iden.", "DNI"));
Lbx.Items.Insert(0, ListItem);
Lbx.Items.Remove(ListItem);
Lbx.Items.RemoveAt(Indice);
Lbx.Items.FindbyValue(valor);
Lbx.Items.FindbyText(Texto);
Lbx.Items[Indice].Selected;
Lbx.Items[Indice].Value;
Lbx.Items[Indice].Text;
Lbx.Items.Count;
Lbx.SelectedIndex;
Lbx.SelectedValue;
Lbx.SelectedItem;
Lbx[Indice].Selected;

Master Pages
Logran herencia visual para las pginas Web.
Permite manejar reas comunes de un sitio de manera consistente.
Se basan en Templates (Master Page) y en pginas de contenido (Content Page).
Permiten incluir mens, encabezados, navegaciones, etc.
Masters definen <asp:ContentPlaceHolder>
Paginas definen <asp:Content>
Pginas Maestras
Tienen extensin .master.
En lugar de la directiva @Page, utiliza la directiva @Master
Se trata como cualquier formulario web, con la extensin .master, y debe incluir
el siguiente control:
<asp:contentplaceholder id="contenedor" runat="server>
contenido por defecto
</asp:contentplaceholder>

El proceso de unin se realiza cuando se renderiza la pgina.

Pginas de contenido
Al crear un pgina de contenido, hay que elegir la pgina maestra. La directiva
@page de la pgina sera:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
CodeFile="Default.aspx.cs" Inherits="_Default" Title="Home" %>

No repiten los tags de la pgina maestra, pero se pueden acceder desde el


cdigo.
Debe contener el control:
<asp:Content ID="cntDefault" ContentPlaceHolderID="contenedor"
Runat="Server"> contenido de la pgina </asp:Content>

Site navigation
La navegacin de UI es compleja de implementar, especialmente si depende de
un client-side script.
Los nuevos controles simplifican la navegacin del sitio.
o Navegacin UI: TreeView y Menu.
o SiteMap en xml: SiteMapDataSource.
o Ubicacin en el mapa: SiteMapPath.
Por defecto ASP.NET 2 nos permite definir el mapa del sitio en XML pero
tambien puede ser implementado en otro origen de datos.
Infraestructura de navegacin

Mapa del sitio


Est estructurado jerarquicamente.

Los elementos siteMapNode pueden anidarse hasta cualquier nivel, con la nica
restriccin de que el hijo de siteMap depe ser uno solo.
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>

Es posible modificar el SiteProvider dinmicamente.


<siteMap defaultProvider="web1">
<providers>
<clear/>
<add name="web1" type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
<add name="web2" type="System.Web.XmlSiteMapProvider"
siteMapFile="Web2.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>

Adems de tener el Web.Config correcto, se configura la propiedad


SiteMapProvider.
SiteMapDataSource ds = (SiteMapDataSource)
this.Master.FindControl("SiteMapDataSource1");
ds.SiteMapProvider = "web2";

Validando la entrada del usuario


Sirve para verificar que el valor introducido en un control ha sido ingresado
correctamente por el usuario.
Bloquea el procesamiento de una pgina hasta que todos los controles tengan
entradas vlidas.
Evita el ingreso de cdigo malicioso.
Validacin del lado del cliente y del servidor
ASP.NET puede crear tanto validacin del lado del cliente como del servidor.
Validacin del lado del cliente:
o Depende de la versin de browser.
o Devuelve un resultado inmediatamente.
o Reduce la cantidad de ciclos de postback.
Validacin del lado del servidor
o Repite la validacin del lado del cliente.
o Puede validar contra datos almacenados.
Controles de Validacin en ASP.NET
ASP.NET ofrece controles de validacin para:
Comparar valores (CompareValidator).
Comparar contra una frmula personalizada (CustomValidator).
Comparar con un rango (RangeValidator).
Comparar contra un patrn dado por una expresin regular
(RegularExpressionValidator).
Requerir una entrada del usuario (RequiredFieldValidator).

Exhibir un sumario de los controles de validacin de la pgina


(ValidationSummary).

Usar controles de validacin:

Agregar controles de validacin al Web Form. (F54)


Posicionar los controles de validacin en el Web Form. (F55)
Combinar controles de validacin.(F56)
Controles de validacin de entrada.
o RequiredFieldValidator : InitialValue.
o CompareValidator: ValueToCompare o ControlToCompare, Type,
Operator.
o RangeValidator: MinimumValue, MaximumValue, Type.
Usando el control de validacin de Expresiones Regulares.
Usando el control CustomValidator.

RegularExpressionValidator:
Se usa cuando la entrada debe conformar un patrn prestablecido
Visual Studio .NET incluye patrones para:
o Nmeros telefnicos / Cdigos postales / Direcciones de E-mail.
Propiedad: ValidationExpression
Ejemplo:
<asp:RegularExpressionValidator
ControlToValidate="US_PhoneNumber"
ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} "
>*</asp:RegularExpressionValidator >

CustomValidator:
Puede validar en el cliente, en el servidor o en ambos: ClientValidationFunction,
OnServerValidate.
Valida con: Formula, Datos, Objetos COM, Web Service
Validar a nivel de Pgina
Usar la propiedad Page.IsValid: Tiene en cuenta todos los controles de
validacin.
if (Page.IsValid)
{
// Si la pgina es vlida procedo con la ejecucin del cdigo.
}

Usar el control ValidationSummary:


o Recolecta mensajes de error de todos los controles de validacin de la
pgina.
o Puede mostrar mensajes de texto y de error.
o Usar Text="*" para indicar la ubicacin del error.
<asp:ValidationSummary id="valSummary"
runat="server" HeaderText="These errors were found:"
ShowSummary="True"
DisplayMode="List"/>

Depuracion y Seguimiento: Habilitar tracing


A nivel de pgina:

o Habilita el tracing solo en la pgina determinada.


o Se habilita en la directiva @Page de la pgina.
<%@ Page Language="C#" AutoEventWireup="true" Trace="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

A nivel de aplicacin web:


Exhibe info de trace para todas las pginas de una aplicacin web.
Se habilita en archivo Web.Config
<configuration>
<system.web>
<trace enabled="true" pageOutput="true" localOnly="true"/>

Depuracion y Seguimiento: Seguimiento a nivel aplicacin (F66)


Objeto Trace:
Trace.Warn("Valor de A:", a.ToString());
Trace.Write("Valor de B:", b.ToString());
Trace.IsEnabled
Trace.IsEnabled = false;
Usando Trace a nivel de aplicacin:
Pagina
Trace = trae

Aplicacin
Trace= T o F

Trace = false

Trace= T o F

Trace = not set

Trace = T

Resultado
Los resultados de Trace se
muestran en la pgina
Los resultados de Trace no
se muestran
Los resultados de Trace se
muestran en la pgina

Las instrucciones de trace a nivel de aplicacin se muestran en pginas


individuales.
Asignando pageOutput=false en el archivo Web.config los resultados del trace
son visibles por el visualizador de trace.

Tracing en un componente

1. Importar el namespace System.Web


2. Habilitar el Tracing

3. Llamar a los mtodos del objeto trace

HttpContext.Current.Trace.IsEnabled = true;
HttpContext.Current.Trace.Write (Componente", Seguimiento del componente");

Formas de navegar entre pginas


Hipervnculos HTML: <a href="pagina2.aspx">Pgina 2</a>
Controles de Servidor <asp:HyperLink>:
<asp:HyperLink ID="lnkPagina2" runat="server">Ir a Pgina 2</asp:HyperLink>
Response.Redirect():Response.Redirect("pagina2.aspx");
Server.Transfer():
Server.Transfer("pagina2.aspx");
Server.Transfer("pagina2.aspx", true);
Server.Execute():Server.Execute("pagina2.aspx");

Mantenimiento del estado:


Las pginas html de una aplicacin web se transmiten por medio del protocolo HTTP.
Este protocolo es un protocolo sin estado. As, una vez que el usuario ingreso datos en
el navegador, si no se mantiene el estado mediante algn mecanismo, se pierden los
datos ingresados. AP.NET proporciona mecanismos para mantener el estado de sus
variables a travs de las distintas peticiones de pginas Entre estos mecanismos se
encuentran:
Application State: mecanismo de almacenamiento global accesible desde todas
las pginas de la aplicacin Web.
Session State: mecanismo de almacenamiento limitado a la sesin actual del
navegador.
View State: mantiene valores entre mltiples solicitudes a la misma pgina.
Del lado del servidor
Application state: Informacin
disponible para todos los usuarios de la
aplicacin Web.
Session state: Informacin disponible
nicamente para un usuario de una sesin
especfica.
Database: En algunos casos se utiliza una
base de datos para guardar la informacin
de estado.

Del lado del cliente


Cookies
Archivos de texto que guardan
informacin de estado en la PC cliente.
ViewState
Mantiene valores entre mltiples
solicitudes a la misma pgina.
Query strings
Informacin anexada al final de la URL

Administracin de estados - servidor


Application State es un mecanismo de almacenamiento global accesible desde
todas las pginas de la aplicacin Web.
Session State est limitada a la sesin actual del browser.
Las sesiones ASP.NET se identifican con una cadena de caracteres ASCII y se
guarda como una Cookie en el cliente.
Administracin de estados - cliente
Cookies para mantener el estado: Temporarias y Persistentes.
Problema: el usuario puede borrarlas o deshabilitarlas.
Problemas de seguridad.
Espacio limitado a almacenar no ms de 4KB.
Global.asax
Slo un archivo Global.asax por aplicacin Web.
Almacenado en la raz del directorio virtual de la aplicacin Web.
Administra eventos a nivel de aplicacin y sesin.
Los eventos referentes a la manutencin del estado de aplicaciones web, son:
o Application_Start
o Application_End
o Session_Start
o Session_End
F78 Esquema de eventos global.asax
Estado de la aplicacin

Permite almacenar informacin a nivel de aplicacin, comn a todas las


sesiones. Esta informacin se almacena en una coleccin llamada Application.
El acceso a esta informacin se realiza mediante el objeto intrnseco
Application.
protected void Application_Start()
{
DataSet ds = new DataSet();
try
{
FileStream fs = new FileStream(Server.MapPath("schemadata.xml"),
StreamReader reader = new StreamReader(fs);
ds.ReadXml(reader);
}
finally
{
fs.Close();
}
DataView view = new DataView(ds.Tables[0]);
Application["Sucursal"] = view;
}

Estado de la sesin

Una sesin es una interaccin entre un navegador y un servidor web (comprende


varios requests a lo largo del tiempo).
Es posible almacenar informacin nicamente relevante para una sesin.
El acceso a esta informacin se realiza mediante el objeto intrnseco Session.
Protected void Session_Start(object sender, EventArgs e )
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings[
"elstring"].ConnectionString);
command.Connection = conn;
conn.Open();
object result = command.ExecuteScalar();
Session["codigo"] = result;
}
finally {conn.Close();}
}

Duracion de la sesion: 20 minutos por defecto. Puede ser cambiada desde


Web.config
Las variables de aplicacin persisten hasta que se baja el AppDomain
(modificando el web.config, modificando las dlls, reseteando el iis, etc.).

View State
Mantiene el estado de los controles, entre postback de una pgina.
El View State se implementa mediante un campo oculto en el html generado y
viaja en cada POST.
Configuacion - El web.config:
Es un archivo xml, donde se guarda informacin de configuracin comn a toda
la aplicacin como ser: cadenas de conexin, tipo de autenticacin, etc.

El archivo de configuracin posee una estructura jerrquica (xml) que permite


una lectura rpida y facilita su modificacin.
Secciones y grupos de secciones: appSettings, system.web, authentication,
authorization.
Herramienta de administracin del sitio web (Web Site Administration Tool).
Secciones configuracin ms simples:
<configuration>
<connectionStrings>
<add name="northwind"
connectionString="server=(local);database=Northwind;Integrated
Security=SSPI" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

Acceso de lectura/escritura a especificaciones de configuracin.


SqlConnection connection = new
SqlConnection(ConfigurationManager.ConnectionStrings["elstring"].ConnectionStrin
g);

Cookies

Las cookies permiten almacenar informacin en el equipo del cliente.


El cliente puede bloquear el uso de cookies.
Tienen una fecha de expiracin. Si no se especifica, caduca al momento de
cerrarse la sesin.
Puede almacenar mltiples valores.
Se pueden definir mbitos y dominios especficos.
No se pueden borrar, lo que se hace es expirarlas.
Para crear una cookie se crea el objeto HttpCookie y se agrega con el mtodo
Add.
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

Se pueden crear multiples valores para una cookie agregando Valores (Values)
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

Para recuperar una cookie:


if(Request.Cookies["InfoUsuario"] != null)
{ Label0.Text = Server.HtmlEncode(Request.Cookies[Univalor"].Value);
Label1.Text = Server.HtmlEncode(Request.Cookies["InfoUsuario"]["usuario"]);
Label2.Text = Server.HtmlEncode(Request.Cookies["InfoUsuario"]
["ultimaVisita"]); }

Para saber si una cookie existe se la recupera y compara contra null.


Se puede recorrer los valores de una cookie utilizandolos las siguientes
propiedades:
o miCookie.HasKeys //Tiene o no valores
o miCookie.Values.Count
o miCookie.Values.AllKeys[j] //Nombre del Valor
o miCookie.Values[j] //Devuelve el contenido

Autenticacin

Es el mecanismo que permite afirmar que la persona que esta ingresando al sistema es
quien dice ser.Se aceptan las credenciales ingresadas por el usuario (usuario
contrasea) y se validan contra una base de datos, el sistema operativo, un servicio web,
u otro mecanismo definido segn el tipo de autenticacin
Basada en Windows
o Basada en Windows e IIS. La solicitud de la pgina pasa por IIS, Si IIS
valida exitosamente la credencial, entonces se devuelve la pgina
solicitada.
Basada en formularios
o Las solicitudes no autenticadas son redireccionadas a un formulario de
login, Despus de validar la credencial se enva al cliente una cookie de
autenticacin.
Configuracin Autenticacin:
El tipo y las caractersticas de la autenticacin se configuran en el archivo
web.config.
<system.web>
<authentication mode="Forms">
<forms loginUrl="LogIn.aspx" protection="All" timeout="20" path="/"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>

Autenticacin por formularios (F96 Ver)


La autenticacin por formularios se utiliza para validar a los usuarios contra
bases de datos relaciones, Servicios Web, etc.
o Si las credenciales son vlidas, ASP.NET graba un ticket de autenticacin
en la cookie que contiene la identidad del usuario.
o Si el usuario es annimo, redirecciona las peticiones a una pgina
predeterminada para validar las credenciales del usuario
Controles de Login (Prediseados) (F97).
Control de creacin de usuarios (F98)
User Control
Los User control simplifican la reutilizacin de cdigo e Interfaz de Usuario
dentro de las aplicaciones Web.
Un user control es un Web server control definido por el usuario con ext .ascx.
Contiene tags HTML, pero no los tags <HTML>, <BODY>, o <FORM>.
Contiene cdigo que maneja sus propios eventos
Aadir un User Control
Usarla directiva @Register para incluir un user control en una pagina ASP.NET.
<%@ Register TagPrefix="demo"
TagName="validNum" Src="numberBox.ascx" %>

Insertar el user control en un Formulario Web.

Usar las propiedades Get y Set de los user control.

<demo:validNum id="num1" runat="server"/>


num1.pNum = 5 'Set

x = num1.pNum 'Get

Crear un User Control


Dos mtodos para crearlos:
o Crear un nuevo user control utilizando Visual Studio .NET.
o Convertir una pgina ASP.NET en un user control.
La pgina anfitriona interacta con el control utilizando propiedades.
public int pNum
{
get
{
return Convert.ToInt32(number1TextBox.Text);
}
set
{
number1TextBox.Text = Convert.ToString(value);
}
}

Vous aimerez peut-être aussi