38
FUNDAMENTOS DEL DESARROLLO DE APLICACIONES WEB Introducción al desarrollo con ASP.NET Más que una evolución sobre ASP, ASP.NET es una auténtica revolución en el mundo del desarrollo Web, y no sólo en el ámbito relacionado con Microsot. !o que me"or deine al desarrollo combinado con ASP.NET y #isual Studio es que ha equiparado la creación de aplicaciones para Internet a lo que era común en entornos de escritorio , salvando las in$erentes di icultades que ello con lleva de or ma tra ns% arente al %ro&ramador. !os %ro&ramad ores de ASP . NET dis%onen de todo lo que 'siem%re' $an disrutado los %ro&ramadores de Windo (s) dise*adores visuales, asistencia avan+ada conte tual, códi&o com%ilado de alto rendimiento, trans%arencia acerca de dónde se e"ecuta cada %arte del códi&o, enlace a datos, re"illas, etc... Las páginas ASPX Si nos vamos a lo undamental es %osible crear una %á&ina ASP.NET usando el bloc de notas y sin saber nada de la %lataorma .NET y de sus dierentes es%acios de nombre. !as %á&inas de servidor de ASP.NET son en esencia archivos de texto que contienen -TM! y etiquetas y que tienen una extensión '.aspx' . Por ello se les denomina de modo &enérico páginas ASPX . Al i&ual que las %á&inas ASP clásicas so%ortan el uso de etiquetas <% %> %ara delimitar bloques de códi&o. e $ec$o, %or com%atibilidad, se %uede usar en &ran medida todo lo que conocemos de ASP /.0, lo cual no quiere decir que sea lo más recomendable. Sin embar&o %ara amiliari+arnos $aremos un e"em%lo sencillo.

Fundamentos Aplicaciones Web

Embed Size (px)

DESCRIPTION

Aplicaciones web ASP.Net

Citation preview

Page 1: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 1/38

FUNDAMENTOS DEL DESARROLLO DE APLICACIONESWEB

Introducción al desarrollo con ASP.NET

Más que una evolución sobre ASP, ASP.NET es una auténtica revolución en el mundodel desarrollo Web, y no sólo en el ámbito relacionado con Microsot. !o que me"ordeine al desarrollo combinado con ASP.NET y #isual Studio es que ha equiparado lacreación de aplicaciones para Internet a lo que era común en entornos de escritorio,salvando las in$erentes diicultades que ello conlleva de orma trans%arente al%ro&ramador.

!os %ro&ramadores de ASP.NET dis%onen de todo lo que 'siem%re' $an disrutado los%ro&ramadores de Windo(s) dise*adores visuales, asistencia avan+ada contetual,códi&o com%ilado de alto rendimiento, trans%arencia acerca de dónde se e"ecuta cada

%arte del códi&o, enlace a datos, re"illas, etc...

Las páginas ASPXSi nos vamos a lo undamental es %osible crear una %á&ina ASP.NET usando el bloc denotas y sin saber nada de la %lataorma .NET y de sus dierentes es%acios de nombre.

!as %á&inas de servidor de ASP.NET son en esencia archivos de texto que contienen-TM! y etiquetas y que tienen una extensión '.aspx' . Por ello se les denomina demodo &enérico páginas ASPX .

Al i&ual que las %á&inas ASP clásicas so%ortan el uso de etiquetas <% %>  %aradelimitar bloques de códi&o. e $ec$o, %or com%atibilidad, se %uede usar en &ranmedida todo lo que conocemos de ASP /.0, lo cual no quiere decir que sea lo másrecomendable. Sin embar&o %ara amiliari+arnos $aremos un e"em%lo sencillo.

Page 2: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 2/38

Figura 3.1.1.- Página !P" sencilla

El códi&o de la i&ura no se distin&ue de una %á&ina ASP clásica salvo %or la etensióndel arc$ivo 1.asp#  en lu&ar de .asp2. Sin embar&o si nave&amos $asta esta %á&ina1ubicada en el ra3+ de nuestro servidor 44S2 veremos que el resultado es el quees%erábamos)

Figura 3.1.$.- esultado del código anterior 

e todos modos, aunque no %odamos %ercibirla, ya eiste una sustancial dierencia conuna %á&ina ASP) el %eque*o ra&mento de códi&o que $emos incluido se $a com%iladoantes de e"ecutarlo, en lu&ar de $aberse inter%retado como en ASP. 5bviamente eneste caso no orece venta"a al&una, %ero es im%ortante conocer esta caracter3stica%ues nuestras a%licaciones obtendrán un mayor rendimiento %or el mero $ec$o de serASP.NET.

Más códigoSi&uiendo con el e"em%lo vamos a a*adir un %oco más de códi&o %ara com%robar $astaque %unto son com%atibles las %á&inas ASP6 con el códi&o ASP.

Si lo modiicamos %ara que ten&a el si&uiente as%ecto)

Page 3: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 3/38

Figura 3.1.3.- &ás código a'adido a la página !P" 

A$ora durante la car&a 1o la recar&a2 de la %á&ina veriicamos si se le está %asando un%arámetro %or P5ST, en cuyo caso sustituimos la ca"a de teto %or un saludo alnombre que se le esté %asando)

Figura 3.1.4.- Resultado de la ejecución.

Estp!ndo" p!#o$$$ %!n &' (!)os )!*o#ado+Este e"em%lo nos $a servido %ara ver qué ASP6 si&ue siendo com%atible en cierta

medida con ASP, y que sólo %or este $ec$o ya me"oraremos la escalabilidad de las%á&inas. e todos modos el cambio de la etensión del arc$ivo sólo uncionará en las%á&inas más sencillas. En códi&o no trivial tenemos una %robabilidad tendente a 7 deque no $aya esa suerte.Además, aunque as3 uera, no $abr3amos &anado demasiado) se&uir3amos con códi&ode cliente y de servidor entreme+clado y di3cil de mantener y no tendr3amos nin&unade las venta"as que $emos mencionado antes.

Page 4: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 4/38

Si bien %odemos escribir códi&o ASP.NET de la manera correcta sólo con el bloc denotas, la me"or orma de desarrollar %á&inas Web con ASP.NET es usando Visual 

Studio 2010, que como veremos ense&uida nos orece una orma visual de traba"o "unto con una se%aración estricta entre el códi&o y la intera+ de usuario, que es lo que%retend3amos.

E, !nto#no d! d!sa##o,,o- .isa, Stdio /010#isual Studio 8070 es el entorno de desarrollo de a%licaciones Web %ara la versión 9.0de la %lataorma .NET. 5rece todo ti%o de $erramientas %ara acilitar el traba"o del%ro&ramador) dise*adores &ráicos de %á&inas y clases, asistentes de uso de bases dedatos, un servidor (eb de desarrollo, ayuda a la escritura de códi&o, y en &eneral todolo que se es%era de un entorno de desarrollo rá%ido moderno y muc$o más todav3a.

Para crear un nuevo %royecto ASP.NET utilice el men:  Archivo·uevo·Sitio !e". Al

$acerlo a%arecerá un diálo&o como el de la i&ura)

Figura 3.1.5.- El dilogo de nue!o "ro#ecto $e% &a"lica%le a 'isual Studio()1)*.

Page 5: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 5/38

Nota)!as %lantillas dis%onibles en el diálo&o de nuevo %royecto (eb %uededierir de%endiendo de la versión de #isual Studio 8070 que utilice. Porsim%licidad se muestra el diálo&o de la versión #isual Web evelo%erE%ress, el más sim%le.

En él tenemos la o%ortunidad de ele&ir qué tipo de pro#ecto vamos a crear 1%ordeecto un sitio (eb de ASP.NET2, en qué u"icación $%sica  queremos crearlo 1lonormal será en nuestro disco duro %ero %odr3amos ele&ir un sitio &estionado %or ;TP o-TTP2 y con qué lengua&e de prograación.

Eisten dierentes len&ua"es que nos sirven %ara crear el códi&o de nuestras %á&inas.ado que en la %ráctica todos tienen las mismas ca%acidades esco&er uno u otro esuna cuestión de eSección %ersonal. ado que este curso está orientadoundamentalmente a %ro&ramadores que vienen de ASP o #<=, vamos a ele&ir #isual<asic 8070 como len&ua"e de todos nuestros e"em%los. En cualquier caso todo loe%licado %ara éste es %erectamente válido %ara los otros len&ua"es y le servirá i&ualsi se decide %or ellos.

E2p,o#ando !, !nto#noTras crear un %royecto nuevo, el entorno tiene un as%ecto similar a este)

Figura 3.1.+.- El entorno de desarrollo de 'isual Studio tras crear un "ro#ecto&a"lica%le a 'isual Studio ()1)*.

Page 6: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 6/38

Antes de a%render a mane"ar #isual Studio 8070 vamos a %onernos en situaciónconociendo los distintos elementos que orman %arte del entorno.

E2p,o#ado# d! so,cion!sEste elemento contiene un árbol con los %royectos en los que estamos traba"ando y los

dierentes arc$ivos y car%etas que orman %arte de ellos.Nada más crear un nuevo %royecto Web sólo eiste una car%eta llamada  pp()ata, yuna %á&ina ASP6 creada de orma %redeterminada que está vac3a y es con la quecomen+aremos a traba"ar.!os botones de la %arte su%erior se usan %ara reali+ar diversas acciones sobre elelemento que ten&amos seleccionado. Por e"em%lo en el caso de la %á&ina %odemosabrir su dise*o o su códi&o %resionandores%ectivamente el tercer y cuarto botones %or laderec$a.

3#!a d! doc)!ntos

Figura 3.1.,.- rea de docuentos ostrando un editor de /T0.

Es la +ona situada en el centro del entorno de desarrollo. >ontiene los dierenteseditores de códi&o as3 como dise*adores de diversos ti%os 1de intera+ de usuario, declases, de )ata!ets...2. Es en donde %asaremos la mayor %arte del tiem%o traba"ando.

Page 7: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 7/38

Cad#o d! (!##a)i!ntas

Figura 3.1.2.- uadro de erraientas # detalle de un algunos gru"os de ste.

El cuadro de $erramientas contiene los dierentes elementos que %odemos utili+ar %arala deinición de la intera+ de usuario de nuestra a%licación, as3 como al&unos otroscom%onentes no visuales que también se %ueden arrastrar $acia el dise*ador visual de

%á&inas Web. Está situado %or deecto en el lateral i+quierdo del entorno.

Edito# d! p#opi!dad!sAl i&ual que en #isual <asic =.0, ;ront%a&e y otros entornos, el editor de %ro%iedadesnos %ermite a"ustar los valores de las %ro%iedades en tiem%o de dise*o de los ob"etosque $ayamos seleccionados.Este editor sirve %ara a"ustar las %ro%iedades de todos los ob"etos que %odamos utili+aren el entorno) tanto de los controles que se arrastran sobre un dise*ador como de los%ro%ios arc$ivos del e%lorador de soluciones y las etiquetas -TM! o 6M!, etc...

Page 8: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 8/38

Al&unas %ro%iedades se editan directamente en eles%acio dis%onible y otras lan+an un asistente o undise*ador que nos ayuda con la tarea.

Se %ueden ver las %ro%iedades ordenadasalabéticamente o bien a&ru%adas en dierentescate&or3as 1o%ción %or deecto2. Además de las%ro%iedades también se %ueden a"ustar los &estoresde eventos de los ob"etos usando el %en:ltimo botón%or la derec$a. En la %arte inerior se obtiene unaconcisa ayuda sobre cada %ro%iedad seleccionada.

Ba##as d! (!##a)i!ntas 4 )!n5s

Se sit:an en la %arte su%erior y dan acceso al resto de las caracter3sticas de la$erramienta de traba"o. Se&:n el conteto en el que nos encontremos las barras de$erramientas que veremos serán distintas. #isual Studio se encar&a de mostrar yocultar la in&ente cantidad de barras dis%onibles mostrando en cada caso sólo las quenecesitemos. Esto racionali+a el acceso a los elementos de la intera+ que de otromodo ser3an inmane"ables.

T#a6a*o con 7o#),a#ios W!6 4 cont#o,!sEl entorno de traba"o que $emos e%lorado es muy intuitivo y ácil de utili+ar. En lamayor %arte de los casos vamos a $acer uso :nicamente de los tres dise*adores que$emos visto en el v3deo de la Sección anterior) dise*ador visual de ormularios Web,dise*ador de -TM! y editor de códi&o de #<.NET.

>reemos un e"em%lo sencillo desde cero %ara ver cómo se traba"a. !ue&o estudiaremosla estructura de los arc$ivos &enerados %ara com%render su uncionamiento. El

e"em%lo es el mismo que $emos creado en la %rimera Sección del módulo %eroutili+ando el modo de %ro&ramar de ASP.NET y no el códi&o 'es%a&uetti' t3%ico de ASPclásico que $emos utili+ado antes.

C#!ando ,a int!#7a8 g#á9ca d!, !*!)p,oesde #isual Studio cree un nuevo %royecto de sitio Web. Abra el dise*ador de la%á&ina %or deecto que se crea 1)e*ault.asp# 2 $aciendo doble clic? sobre ella. A*adaun control de ti%o etiqueta 1(a"el 2 en la %arte su%erior y estable+ca su %ro%iedad )ext 

Page 9: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 9/38

con el valor '+,ienenido a !P./0 ', eli&iendo un ti%o de letra de tama*o &rande ycolor ro"o.

@usto deba"o a&re&ue un control )ext*ox , y estable+ca su %ro%iedad 4 como'Nombre', !idth como $22p# y +ax(ength a":stela a 2.

A continuación introdu+ca un botón 1*utton2 y as3&nele el teto 'Saludar' 1%ro%iedad)ext 2 y otór&uele el nombre de 'cmd!aludar '.

Por in a*ada una etiqueta más con el nombre l4l!aludar , y a"uste su %ro%iedadVisi"le a False %ara que no se vea en el ormulario (eb una ve+ que lo e"ecutemos.

>uando acabe el as%ecto del ormulario deber3a ser muy similar a éste)

Figura 3.1.6.- As"ecto del eje"lo tras a%er a7adido los controles.

Nota)Si no tiene claro cómo $acerlo vea el %rimer v3deo de esta Sección al %iede este documento en donde se desarrolla el e"em%lo com%leto.

R!spondi!ndo a, !:!nto d!, 6otónPara saludar al usuario con el nombre que introdu+ca en el cam%o de teto debemosres%onder a la %ulsación del botón. En ASP clásico tendr3amos que enviar un ormularioa otra %á&ina 1o a la misma2 y ver qué valores no es están %asando %ara actuar enconsecuencia. En ASP.NET esto no es necesario ya que traba"aremos se&:n el clásico

%aradi&ma orientado eventos, res%ondiendo a las acciones del usuario.

En este caso debemos interce%tar la %ulsación del botón %or %arte del usuarioverdadB. Pues lo :nico que tendremos que $acer es escribir un mane"ador %ara elevento ,lic-  del botón, al&o que resultará amiliar e intuitivo a los %ro&ramadores de#<=. Para ello $a&a dobleCclic sobre el botón en el dise*ador. Esto $ará que se abra eleditor de códi&o y que automáticamente a%are+ca un mane"ador de eventos %ara elevento >lic?, que es el %redeterminado de los botones)

Page 10: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 10/38

Figura 3.1.1).- 0anejador del e!ento lic8 generado autoticaente "or eleditor.

Al i&ual que en #<= desde el códi&o del evento 1que se e"ecutará en el servidor,Datención2 %odemos $acer reerencia a cualquier control de la %á&ina y acceder a susmétodos y %ro%iedades. e este modo se %uede escribir el si&uiente códi&o sim%le)

Es decir, se concatena un saludo al nombre introducido en el cam%o de tetoasi&nándoselo como teto a mostrar a la etiqueta oculta, y se $ace visible ésta usandosu %ro%iedad 5isi4le.

Si e"ecutamos a$ora el e"em%lo 1%resionando ;F o el botón corres%ondiente en la barrade $erramientas2 veremos que unciona sin %roblemas)

Page 11: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 11/38

Figura 3.1.11.- Nuestro eje"lo antes # des"us de "resionar el %otón.

Nótese que no $emos a*adido ormulario al&uno, ni tam%oco @avaScri%t, y que enrealidad %ara nosotros es trans%arente el modo en como se &estionan los eventos eincluso que lo que estamos creando sea una a%licación Web. No $emos usado -TM! y1$asta cierto %unto2 nos da i&ual que el códi&o se e"ecute en el servidor o en el cliente.

P!#o$$$ %Có)o 7nciona !sto po# d!6a*o+Si ec$amos un vista+o al códi&o de la %á&ina &enerada veremos que, a%arte del -TM!que es más o menos obvio que deber3a $aber dados los controles que $emos utili+ado,eiste también bastantes l3neas de códi&o @avaScri%t y al&unos cam%os ocultos.

!os cam%os ocultos se utili+an %ara almacenar inormación sobre la %á&ina y el códi&o@avaScri%t se ocu%a de su mantenimiento y de enviar el ormulario al servidor antedeterminadas acciones del usuario 1simulando los eventos2.

Gno de los cam%os ocultos más im%ortantes es el que se reiere al VieState.

Figura 3.1.1(.- Viestate de una "gina sencilla. 

El 5ie6!tate C que se %odr3a traducir como 'Estado de #isuali+ación' C reco&e demanera automática el estado y el contenido de los controles de una %á&ina. Estainormación se utili+a %ara de"arlos como estaban en cada recar&a de la %á&ina.>uando %resionamos el botón de nuestro e"em%lo la %á&ina se recar&a y todo lo quecontiene debe estar i&ual que antes de $acerlo o no %odr3amos asimilarlo a unormulario. A ece%ción de una %eque*a demora %or el via"e de ida y vuelta al servidor,%ara el usuario no debe $aber sensación de recar&a de la %á&ina. El 5ie6!tate seencar&a de ello.

Nota)A cada via"e de ida y vuelta de nuestra %á&ina al servidor comoconsecuencia de un evento en el cliente se le denomina Post*ac- . Se%uede averi&uar si la car&a actual de la %á&ina es la %rimera o se tratade un Post,ac7 consultando el valor booleano de la %ro%iedad /sPost*ac-  de la %á&ina 1&e.IsPost4ac7 2.

>omo se a%recia en la i&ura se trata de inormación sobre la "erarqu3a de controles dela %á&ina codiicada %ara su env3o al servidor. Al recibirla, la clase Page de la que$ereda nuestra %á&ina se encar&a de decodiicarlo, %rocesarlo e iniciali+ar de nuevo elestado de cada control se&:n la inormación acilitada, sin necesidad de traba"o %ornuestra %arte.

Page 12: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 12/38

Por otra %arte, %ara determinar qué evento se $a %roducido, se em%lean también doscam%os ocultos y un %oco de @avaScri%t)

Figura 3.1.13.- a"os ocultos de in9oración so%re e!entos

Figura 3.1.14.- :a!aScri"t asociado a la noti9icación de e!entos al ser!idor.

>uando se eect:a al&una acción el @avaScri%t de la %á&ina se encar&a de rellenarestos cam%os y %rovocar un Post,ac7   de la %á&ina. El evento es detectado en elservidor a través de estos cam%os ocultos y se &estiona adecuadamente %or ASP.NET,que se encar&a de notiicar los eventos.

!os mecanismos de 5ie6!tate y de Post,ac7  son los res%onsables de que, a eectos%rácticos, %odamos traba"ar en la Web utili+ando el %aradi&ma de %ro&ramaciónorientada a eventos.

D4ma&3nate tener que &estionar eso t: mismo con códi&o %ro%io

Ot#as pa#t!s d!, 7nciona)i!nto d! ASP$NET a t!n!# !nc!nta

E, a#c(i:o )ac(in!$con9gEste arc$ivo contiene inormación de coni&uración de todos los %royectos ASP.NET.Es %or ello ló&ico %ensar que aqu3 se reunirá aquella inormación com%artida %or todoslos %royectos Web, y que la inormación de coni&uración de cada a%licación, deberáa&re&arse en el arc$ivo 8e4.con*ig.

Page 13: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 13/38

E, a#c(i:o W!6$con9gEste arc$ivo contiene los %arámetros y o%ciones de coni&uración de las a%licaciones deASP.NET. >ada a%licación Web contendrá su arc$ivo de coni&uración.-asta la versión de ASP.NET 9.0, este ic$ero $a crecido enormemente debido ala*adido de o%ciones sucesivas que se $an reali+ado como %or e"em%lo A"a.A %artir de la versión de ASP.NET 9.0, este ic$ero y su inormación se $a reducidoconsiderablemente, ya que muc$as de las o%ciones a&re&adas $an ido a otro ic$ero deconi&uración llamado machine.con*ig.

E*!cción d! na ap,icación ASP$NET po# p#i)!#a :!8 4 !, inicioato)áticoGn detalle a tener en cuenta es que las a%licaciones Web de ASP.NET necesitan sere"ecutadas %or %rimera ve+ %ara que se %re%are y com%ile, y esté lista y dis%onible de

orma más á&il en %eticiones %osteriores.

Esto se a%recia muc$o me"or si e"ecutamos una %á&ina Web de una a%licación WebASP.NET que muestre una inormación de teto en %antalla, y si volvemos a e"ecutaresa misma %á&ina Web. El tiem%o de es%era de la si&uiente %etición será muc$omenor.Para resolver esta %roblemática, se %od3a e"ecutar las %á&inas ASP.NET %reviamente oacudir al códi&o de iniciali+ación del método A%%licationH!oad que se encuentra en elarc$ivo 9lo4al.asa#  %ara reali+ar dierentes o%eraciones que aciliten ese despertar .

A %artir de ASP.NET 9.0, se %uede $acer uso de la escalabilidad de inicio automáticoque tiene este ob"etivo y que se e"ecuta en 44S I.F ó su%erior y en sistemas o%erativosWindo(s Server 800/ J8 ó su%erior.

>on el inicio automático, %odemos %oner en uncionamiento un con"unto dea%licaciones Web iniciali+ándolas de orma que las %eticiones -TTP %uedan serace%tadas directamente.

Para llevar a cabo esta tarea, deberemos a&re&ar en el arc$ivo application:ost.con*ig

los si&uientes %arámetros)

  <applicationPools>

  <add name="MyApplicationPool" startMode="AlwaysRunning" />

  </applicationPools>

Page 14: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 14/38

L;)it! d! ta)a<o !n ,as URLsEn ASP.NET el l3mite de lon&itud de una GJ! es de 8=0 caracteres, tama*o basado enel l3mite de directorios y ic$eros de NT;S.

En ASP.NET 9.0, ese l3mite %uede incrementarse o decrementarse como deseemos.

Esto se lo&ra utili+ando dos nuevos atributos httpuntime de coni&uración.

Gn e"em%lo de uso de este atributo es el que se indica a continuación)

  <httpRuntime maxRequestPathLength="!"

max#uery$tringLength="%&" />

>on el atributo ma#equestPath;ength modiicamos las rutas sin incluir el %rotocolo yel nombre del servidor.

>on el atributo ma#uer=!tring;ength %ermitimos cadenas de b:squeda más lar&as ocortas de%endiendo del valor dado.

D!n!gación d! ca#act!#!s !n URLsGna nueva caracter3stica de ASP.NET 9.0 y versiones %osteriores es la %osibilidad dedene&ar caracteres es%eciales en una GJ!.

Esto se lo&ra $aciendo uso del atributo requestPathInalidhars, e indicando en eseatributo, el caracter o caractes es%eciales que %rovocarán un error de ti%o 900 1<adrequest2.

En el si&uiente e"em%lo, se indica los %arámetros de coni&uración que $abr3a que%oner %ara dene&ar el acceso a una GJ! con unos determinados caracteres)

  <httpRuntime requestPath'n(alid)hars="<*>*+*,*-*.**0" />

Los a#c(i:os d! código>entremos nuevamente nuestra atención en los arc$ivos de códi&o de servidor que

tenemos en #isual Studio 8070. Eisten dos) uno que deine la intera+ de usuario yotro %ara la ló&ica de la a%licación. #eamos cómo están ormados y cuál es el neo deunión entre ellos.

E, a#c(i:o $asp2 d! int!#7a8 d! sa#io$En realidad todo el códi&o se e"ecuta en el servidor y, %or %oco intuitivo que sea %araun %ro&ramador Web tradicional, el evento desencadenado %or la %ulsación se &estionaen el servidor, no en el cliente. #eamos cómo unciona.

Page 15: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 15/38

Para crear la intera+ de usuario sólo $emos tenido que arrastrar controles Web desdeel cuadro de $erramientas al dise*ador. Por detrás lo que $a estado ocurriendo es queel códi&o -TM! de la %á&ina $a estado creciendo $asta ser como el si&uiente)

Figura 3.1.15.- ódigo /T0 de la inter9a; de usuario ASP<.

#emos que, sin que conscientemente lo $ayamos $ec$o, se $a creado un ormulario1Form12 que al carecer de un atributo 0I?  se enviará a si mismo. Este ormulario1y otros elementos tienen asi&nado el atributo runatserver . Kste se usa %araindicar que son controles de servidor y que, como tales, deberán estar dis%onibles %arael códi&o que se e"ecuta en el servidor, como %or e"em%lo nuestro mane"ador delevento.

Nota)En las %á&inas ASP6 sólo se recomienda el uso de un ormulario, que esademás el ormulario que incluye automáticamente el entorno dedesarrollo. !o cierto es que no se trata de limitación al&una %uesto quela iloso3a de desarrollo es com%letamente distinta a la tradicional y nolos vamos a necesitar.

El resto de elementos que a%arecen son etiquetas -TM! normales 1%.e"<4r@>  %aracambio de l3nea2 y unas etiquetas es%eciales que llevan el %rei"o asp. Este %rei"oindica que son controles (eb de ASP.NET, y como tales son ob"etos de las clases

contenidas en el es%acio de nombres !=stem.8e4.AI.8e4ontrols. Al com%ilar la%á&ina ASP.NET instancia dic$as clases y las %one a dis%osición de nuestro códi&o%asando todo ello inadvertido %ara nosotros.

E, a#c(i:o $:6 d! ,ógica d! ,a ap,icaciónPor otro lado eiste un arc$ivo con etensión .vb, de%endiente, se&:n el e%lorador de%royectos, del arc$ivo .as% anterior.

Page 16: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 16/38

Figura 3.1.1+.- Arci!o .!% de lógica de la a"licación

Kste contiene la 'ló&ica' de la a%licación, es decir, lo que $ace que una intera+ de

usuario se com%orte de un determinado modo. En nuestro caso contiene el mane"adordel evento con lo que deseamos que ocurra al %resionar el botón. En una a%licaciónreal %odr3a contener multitud de cosas más.

Nota)Aunque es muy tentador abusar de la ca%acidad de crecimiento de estosarc$ivos de códi&o, suele ser muc$o más recomendable re%artir todaaquella uncionalidad que no se reiera a la intera+ de usuario 1es decir,lo que no sean eventos normalmente2 en otros arc$ivos y clasesdesli&ados de %á&inas asp# . #eremos cómo $acerlo en breve en estecurso.

esde este arc$ivo de códi&o %odemos res%onder a cualquier evento de los controlesde intera+ de usuario o de la %ro%ia %á&ina, y acceder a sus métodos y %ro%iedades.

Lracias a la eistencia de estos dos arc$ivos %odemos inde%endi+ar el as%ecto de laa%licación 1la intera+2 de lo que queremos $acer con ella. e $ec$o incluso se %odr3a%ro&ramar con dos equi%os distintos, cada uno encar&ado de una cosa. Esta constituyetambién una de las &randes venta"as de ASP.NET.

%En dónd! s! !nc!nt#a !, n!2o !nt#! int!#7a8 4 ,ógica+Tras esta %re&unta tan a%arentemente ilosóica se encuentra una res%uesta muysencilla) la directiva de %á&ina 3Page y la eistencia de clases parciales en .NET

8.0.

Si nos i"amos en el códi&o de la %á&ina ASP6 de la i&ura anterior, la %rimera l3nea esuna directiva BPage con diversos atributos.

•  Auto4vent!ire5p) indica si los eventos se deben &enerar de ormaautomática o no. A los eectos de este curso no $ablaremos más de él.

Page 17: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 17/38

• ,ode6ile) este atributo es es%ec3ico de #isual Studio y le indica cuál es elarc$ivo de códi&o 1.vb2 que contiene la deinición de la ló&ica de la %á&ina.

•  /nherits) indica de qué clase $eredará la clase autoC&enerada %or ASP.NET%ara &estionar los contenidos de la %á&ina ASP6 actual 1re%ase el %rimer v3deode este módulo acerca de códi&o com%ilado2.

Nota)Inherits es un atributo nuevo en ASP.NET 8.0, y arrastrado a ASP.NET/.F ó su%erior, que modiica el modelo utili+ado en #isual Studio 8008 y800/ %ara crear códi&o de ló&ica de ne&ocio %ara las %á&inas,denominado code-4ehind . Si $as traba"ado al&o con estas versionesanteriores te sor%renderá ver este cambio y lo muc$o que con él sereduce el códi&o necesario %ara crear las %á&inas ASP6, ya que no $ayque declarar los controles ni iniciali+arlos en el códi&o de ló&ica.

Si a$ora os i"amos en el códi&o de ló&ica de la %á&ina 1i&ura /.7.70 anterior2,veremos que se deine parcialente una clase ()e*ault . este es el neo de uniónentre ambos arc$ivos.

>uando ASP.NET &enera la %á&ina %rimero com%leta automáticamente el códi&o de laclase  ()e*ault   con otra ipleentación parcial  de ésta en la que se deinen loscontroles de la %á&ina 1el códi&o que $a desa%arecido res%ecto a las versionesanteriores del entorno2. !ue&o deine una nueva clase es%ec3ica %ara la %á&ina que$ereda de  ()e*ault  y es en ella donde iniciali+a los controles y $ace el neo entre laintera+ y la ló&ica. Es %or este motivo que a$ora los mane"adores de eventos de laclase se declaran con accesibilidad protected , %ara que %uedan utili+arse desde la clasederivada.

Nota)A esta novedosa orma de se%arar 1y al mismo tiem%o unir en tiem%o dee"ecución2 la intera+ de la ló&ica $ay quien la denomina code7"eside , como $omena"e al $asta a$ora utili+ado 'codeCbe$ind' deASP.NET 7..

Nota)Todo lo e%licado es muy ácil de veriicar si se accede a la car%etatem%oral de ASP.NET tal y como se demostró en el %rimer v3deo de estemódulo. En él encontraremos los arc$ivos de códi&o auto&enerados%or .NET en los que %odremos com%robar l3nea %or l3nea todo lo que $ecomentado. Se trata de una iniciativa muy didáctica.

os controles de ASP.NETASP.NET orece una &ran cantidad de controles que se %ueden usar en los desarrollosde a%licaciones Web. urante la Sección anterior $emos %odido ver al&unos de ellos en

Page 18: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 18/38

uncionamiento mientras que su%imos de la eistencia de otros al verlos en el cuadrode $erramientas.

En esta Sección vamos a conocer desde un %unto de vista &eneral los ti%os decontroles eistentes y a%renderemos, con más detalle, la utili+ación unos controlesmuy :tiles) los controles de validación.

Los cont#o,!s =TML-asta a$ora $emos visto lo sencillo que resulta traba"ar con controles de servidorarrastrándolos y soltándolos en los ormularios Web. !os controles que $emos utili+adose deinen usando una sintais es%ecial 1<aspC...>2 y como $emos %odido com%robarres%onden a un com%ortamientocom%le"o.

Antes de ASP.NET cuando necesitábamosusar un control en una %á&inaem%leábamos al&uno de los deinidos en-TM!) controles de ti%o <input>,<te#tarea>  o <img>  entre otros. >onASP.NET dis%onemos también de la%osibilidad de usarlos.

esde el cuadro de $erramientasdis%onemos del &ru%o 8)+( 1ver i&uraad"unta2 que son controles equivalentes a

los de -TM!.

Podemos arrastrarlos y soltarlos sobrenuestro ormulario al i&ual que los otros,%ero al contrario que éstos no see"ecutarán %or deecto en el servidor.Sólo a%arecerá su sintais -TM! %ura y dura.

Se trata de controles muy :tiles en determinadas ocasiones en las que no necesitamostodas las venta"as que nos orecen los controles de servidor, %or e"em%lo)

O No vamos a acceder a sus métodos y %ro%iedades desde el servidor.O ui+á no necesitamos que manten&an su estado o res%ondan a evento al&uno.O El uso del cam%o oculto #ie(State %uede car&ar la %á&ina en eceso si $ay muc$oscontroles, %or no mencionar que $ay que crear clases en el servidor que losre%resenten cuando se %rocesa la %á&ina. Todo ello reduce la res%uesta de la %á&ina.

Page 19: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 19/38

Por su%uesto %odemos convertirlos en controles de servidor sim%lemente asi&nando suatributo runat , as3)

<input id="1utton2" type="3utton" (alue="3utton" runat="ser(er" />

>omo vemos es un botón corriente de -TM! al que se la $a a*adido el atributo runat .Sólo con esto $emos conse&uido que el control esté dis%onible desde nuestro códi&o deservidor 1como en el e"em%lo2 y disrutaremos de todas las cualidades conocidas)acceso a sus %ro%iedades y métodos, conservación del estado, etc...

En el área de dise*o del ormulario es muy ácil distin&uir los controles de servidor delos -TM! %orque los %rimeros tienen un %eque*o trián&ulo verde que los marca. En lasi&uiente i&ura todos los controles se e"ecutan en el servidor ece%to el botón 'button'de la derec$a.

Figura 3.(.1.- =istinción entre ontroles de ser!idor # /T0

!os controles -TM!, en cualquier caso, son muc$o más sencillos que los otros controlesWeb. Tienen menos %ro%iedades y eventos, los cuales se suelen corres%onder ademáscon los mismos que tienen en -TM!Q@avascri%t. Son más adecuados cuando no

requerimos una &ran leibilidad y queremos car&ar la %á&ina lo m3nimo %osible.

Esta i&ura ilustra la "erarqu3a de los controles -TM! en ASP.NET)

Page 20: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 20/38

Figura 3.(.(.- :erar>u?a de los controles /T0

Todos ellos, obviamente, $eredan de la clase ?4Dect , %ero también $eredan de la clasebase -tml>ontrol que está contenida en el es%acio de nombresS#ste.!e".5/.,ontrol .

Sus %ro%iedades se corres%onden con los atributos -TM! del control corres%ondiente,%or lo que la nomenclatura utili+ada no es consistente con la utili+ada en el resto de la%lataorma ASP.NET.

Los cont#o,!s W!6Son controles nativos de ASP.NET. Aunque al&unos %arecen asimilables a controles-TM!, todos van muc$o más allá en cuanto a caracter3sticas y ca%acidades. e $ec$o,aunque al&unos son relativamente sencillos 1como una etiqueta, un botón o un cuadrode teto2, eisten controles muy com%le"os que ser3a di3cil recrear desde cero con-TM! y @avaScri%t. Por e"em%lo el control calendario, las re"illas de datos, los controlesmaestroCdetalle, validadores, etc...

Sus métodos y %ro%iedades tienen nombres consistentes con el resto de la %lataorma.Por e"em%lo, %ara i"ar el teto de un botón o de una etiqueta se usa la misma

%ro%iedad )ext . Para establecer el color de ondo todos usan *ac-,olor . Esto $aceque sea más ácil el desarrollo %orque no $ay que memori+ar nomenclaturas dierentes%ara cada control.

Adaptación ato)ática a, c,i!nt!!os controles Web que vienen con ASP.NET tienen otra caracter3stica que los $ace:nicos y es la ada%tación automática al nave&ador. ASP.NET detecta con qué cliente seestá accediendo 1un nave&ador moderno o anti&uo, un PA, 4nternet E%lorer o

Page 21: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 21/38

Netsca%e, etc...2 y de orma autónoma ada%ta el códi&o que muestra a las ca%acidadesy restricciones concretas del nave&ador utili+ado.

Esta ada%tación tiene en cuenta el so%orte de -TM! y @avaScri%t, %ero tambiéncuestiones como si se deben usar etiquetas básicas en lu&ar de $o"as de estilo >SS%ara el as%ecto.

En esta nueva versión /.F de ASP.NET va un %aso más allá %ermitiendo la ada%taciónautomática de los controles a dierentes nave&adores y dis%ositivos incluso móviles1teléonos y PA de cualquier marca2. A esta caracter3stica se la conoce comorenderi9ación adaptativa.

Figura 3.(.3.- Renderi;ación ada"tati!a@ un iso calendario en unna!egador # !isto desde un ó!il AP.

!a renderi+ación ada%tativa tiene im%licaciones im%ortantes ya que 1$asta cierto%unto2 no $ay que tener en cuenta de antemano si un desarrollo será %ara unnave&ador concreto o incluso %ara dis%ositivos móviles basados en WAP. Por otra %arte,y tal ve+ más im%ortante, está el $ec$o de que no $ay que a%render todo un con"untodierente de $abilidades %ara %oder %ro&ramar %ara dis%ositivos móviles. DPodemosreutili+ar lo que estamos a%rendiendo en este curso.

!a si&uiente i&ura muestra la "erarqu3a de al&unos controles Web de servidor incluidos

con ASP.NET /.F)

Page 22: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 22/38

Figura 3.(.4.- :erar>u?a de controles e% de ser!idor.

Cont#o,!s d! t!#c!#as !)p#!sasA%arte de los controles que vienen con ASP.NET /.F también es %osible utili+ar desdenuestras a%licaciones cualquier otro control Web dise*ado %or terceras em%resas.Eisten ininidad de ellos de todos los ti%os, al&unos realmente %otentes.

Figura 3.(.5.- Algunos eje"los de controles e% de terceras e"resas.

Page 23: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 23/38

En $tt%)RR(((.as%.netRcommunityRcontrolC&alleryR  %odrá encontrar un etensocatálo&o clasiicado de controles Web de servidor.

Cont#o,!s p#opios>omo no %odr3a ser de otra manera, ASP.NET no nos limitará a la $ora de crear

controles %ro%ios %ara reutili+ar uncionalidad en nuestras a%licaciones o incluso %aravenderlos a otras em%resas.

Eisten dos ti%os de controles que %odremos crear)

• ontroles e%) son controles como los que $emos visto $asta a$ora yequi%arables en todos sus as%ectos a los controles nativos de ASP.NET /.F.

• ontroles de usuario) %ermiten la reutili+ación de %artes com%letas de laintera+ de usuario y de la ló&ica asociada a ésta, aunque el so%orte %araconi&urarlos en tiem%o de dise*o es muc$o más reducido que en el caso de losanteriores. Sin embar&o son muy áciles de crear y orecen un método sencillo

de enca%sular uncionalidades que incluyan intera+ de usuario.

!a creación de controles Web 1%rimer ti%o2 es una cuestión com%le"a que se sale delámbito de este curso, %or lo que no los estudiaremos. Sin embar&o en la si&uienteSección veremos la orma de crear nuestros %ro%ios controles de usuario.

4nvesti&ue %or su cuenta la uncionalidad de al&unos de los controles dis%onibles enASP.NET. Es la me"or orma de a%render. escubrirá que la mayor3a son muy áciles deutili+ar y sus %ro%iedades y métodos son de uso sencillo. e"e de momento losenla+ados a datos %ues serán ob"eto de un módulo %osterior y suelen tener máscom%licación.

Cont#o,!s d! A*a2 > A*a2 Cont#o, Too,?itentro de >odePle, se %uede encontrar un %royecto de nombre A"a >ontrol Tool?itque %ro%orciona más de /0 controles que tienen como misión etender con másuncionalidad a los controles de ASP.NET estándar.

Estos controles tienen su mayor interés en la %arte cliente, donde el usuario interact:acon la a%licación Web, sin embar&o, son a*adidos y coni&urados en el servidor.

!o más destacable de estos controles es que %ro%orcionan una intera+ de usaurio conmayores %osibilidades que las que a%orta los controles estándar de ASP.NET.

!a :nica caracter3stica a tener en cuenta es que estos controles requieren de un control!cript&anager .

!os controles de A"a >ontrol Tool?it, %ueden ser utili+ados en #isual Studio 800F o%orterior. !a :nica cosa a tener en cuenta es que a veces, de%endiendo del entorno dedesarrollo seleccionado, deberemos ele&ir un %aquete de ensamblados u otro.

Page 24: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 24/38

Para usar estos controles, deberemos descar&arnos el ensamblado corres%ondiente delenlace que indicamos anteriormente, e irnos al cuadro de $erramientas y seleccionar elensamblado %ara que a&re&ue all3 los controles de usuario a utili+ar.Gna ve+ $ec$o esto, %odremos arrastrar y soltar el control o controles deseados en elormulario Web.

Al a*adir un control a nuestro ormulario Web, éste inserta automáticamente uncontrol !cript&anager .

Más adelante veremos como utili+ar A"a con el A"a >ontrol Tool?it en nuestrasa%licaciones Web.

Cont#o,!s W!6 d! :a,idaciónentro de la %létora de controles de ASP.NET eiste un &ru%o '#alidación' que, comoes ácil ima&inarse, contiene una serie de controles que %ermiten reali+ar de maneracómoda la validación de datos introducidos %or los usuarios.

!o $abitual en las a%licaciones Web es reali+ar una do"le validación. Por un lado sesuele im%lementar una %rimera validación en el cliente 1es decir, en el nave&ador delos usuarios2 utili+ando %ara ello códi&o @avaScri%t. Esto %ermite una %rimera barreraque no im%lica el env3o de datos innecesarios al servidor. >omo %rinci%ales desventa"asde usar @avaScri%t %ara la validación se encuentran la de ser códi&o tedioso de escribiry, sobre todo, que es muy ácil evitarla.<astar3a con que un usuario no tuviese@avaScri%t $abilitado %ara que nouncionara en absoluto.

Por otra %arte también se suele reali+aruna se&unda copro"ación en el 

 servidor . En aras de la se&uridad, comomáima de cualquier desarrollodeber3amos tomar siem%re la si&uiente)'@amás deberé iarme de nada que melle&ue de un ori&en uera de mi control'. En este caso aunque $ayamos $abilitado una%rimera validación en el cliente con @avascri%t no debemos iarnos en absoluto de queésta se $aya reali+ado. Por ello debemos validar todos los datos siem%re en el servidor.Si $ay que quitar una validación que sea siem%re la del cliente.

Esta doble validación suele ser bastante en&orrosa y su%one un esuer+o de desarrolloadicional que ser3a estu%endo %oder obviar. Pensando en acilitarnos este ti%o de tareasASP.NET nos orece los controles de validación.

Estos controles %ermiten deinir re&las de validación en la entrada de datos. ic$asre&las se asocian con otros controles que orman %arte del ormulario (eb, y secombinan entre ellos %ara es%eciicar m:lti%les restricciones sobre los datosintroducidos.

Page 25: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 25/38

!as condiciones t3%icas son, %or e"em%lo, que un cam%o no se %uede quedar vac3o, quetiene que estar com%rendido dentro de un ran&o determinado o incluso que debecum%lir con una e%resión re&ular que indiquemos. Por su%uesto es %osible tambiéndeinir re&las %ro%ias %ersonali+adas.

!a  principal venta&a de estos controles es que %ermiten la deinición de re&las devalidación de orma declarativa, es decir, no $ace alta escribir códi&o %ara usarlos.Ello acilita muc$o el desarrollo y el mantenimiento de las re&las de validación.

Gna ve+ que deinamos las re&las %ara un ormulario los controles de validación seencar&an automáticamente de validarlas tanto en el cliente coo en el servidor .En el lado cliente se convertirán en códi&o @avaScri%t muy %arecido al que nosotrosusar3amos, actuando de %rimera barrera y evitando via"es innecesarios al servidor. !ascom%robaciones del lado del servidor nos evitan %roblemas cuando, %or el motivo quesea, no $an actuado las validaciones en el cliente.

Nota)Se %uede desactivar la validación en el lado del cliente de un controlestableciendo su %ro%iedad 4na"le,lientScript   a False. Podemosdes$abilitar la validación del lado cliente de todos los controlesestableciendo la %ro%iedad ,lient)arget de la %á&ina actual con lacadena E)o6n;eelE  desde el evento de car&a de la %á&ina. >on ello sólose reali+ará la validación en el servidor.

Uso d! ,os cont#o,!s d! :a,idaciónPara $acer uso de uno de estos :tiles controles basta con arrastrarlos al ormulario.#eremos que al $acerlo se muestran como si ueran etiquetas normales, aunque con elteto de color ro"o. Este es el as%ecto que tendrán si se $ace necesaria su actuación.

Mientras no se %roduce una situación en la que la validación racasa serán invisibles.Toda esta uncionalidad se consi&ue utili+ando @avaScri%t, es decir, que no se env3anada al servidor 1no se $ace un post-4ac7 2.

>ada control de validación que arrastremos se debe asociar al control del que deberá'estar %endiente'. Por su%uesto es %osible arrastrar varios validadores y asociarlos aun mismo control %ara as3 veriicar varias condiciones. !o contrario no es cierto, esdecir, no se %uede usar un solo validador %ara veriicar varios controles. El control averiicar se asi&na mediante la %ro%iedad ,ontrol)oValidate del control de validación.

Aunque su utilidad es bastante intuitiva, la si&uiente tabla indica el uso a%ro%iado de

cada uno de los controles dis%onibles)

ontrol Btilidad

Re>uiredFiled'alidator #eriica que el control asociadono se encuentra vac3o.

Page 26: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 26/38

Range'alidator Lenera un mensa"e de errorcuando el contenido de su controlasociado está uera de un ran&ode valores dado. Permite validarintervalos numéricos 1enteros o

decimales o monedas2, ec$as ycadenas de teto.

RegularEC"ression'alidator

>om%ara un teto introducido %orel usuario con una e%resiónre&ular.

o"are'alidator Permite com%arar el valorintroducido %or el usuario conuna constante o con el valor de la%ro%iedad de otro control.

usto'alidator Se usa %ara im%lementar ló&icade validación %ro%ia tanto en elcliente como en el servidor.

Ta%la 3.(.1.- ontroles de !alidación # su utilidad.

El control ValidationSuar#  1aba"o de todo en el &ru%o de controles de la i&uraanterior2 se usa %ara mostrar un resumen de todo lo que está mal en un ormulario enlu&ar de mostrar cada uno de los mensa"es de error individualmente.

No todos los controles se %ueden validar con los controles de validación. e $ec$o sóloun %eque*o subcon"unto de todos los controles Web son adecuados %ara un usocon"unto. En cualquier caso los incluidos cubren la mayor %arte de las necesidadesnormales de introducción de datos, y son los si&uientes)

ontrol Ti"o Pro"iedad

/tlin"utTeCt Entrada de teto #alue

/tlTeCtArea Entrada de teto #alue

TeCtDoC Entrada de teto Tet

/tlSelect !ista de seSección #alue

istDoC !ista de seSección Selected4tem.#alue

=ro"=o$nist !ista de seSección Selected4tem.#alue

Page 27: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 27/38

RadioDuttonist

<otones deseSección

Selected4tem.#alue

/tlIn"utFile Env3o de arc$ivos #alue

Figura 3.(.(.- ontroles >ue se "ueden !alidar # las "ro"iedades >ue se!alidan en ellos.

A%arte de mostrar la inormación de error al usuario, en los eventos de la %á&ina&estionados en el servidor %odemos com%robar el valor de la %ro%iedad  /sValid   delob"eto Page. Ksta será False si al&uno de los controles de validación ubicados en la%á&ina no $a %asado la %rueba de veriicación. Esto es muy :til %ara reali+ar accionescom%lementarias en el servidor en caso de $aber errores.

Sabiendo todo esto es ácil utili+ar cualquiera de los controles de este ti%o. >onsulte elv3deo de esta Sección %ara ver una %ráctica de uso.

.a,idado#!s p!#sona,i8adosTal ve+ el validador que necesite más e%licación es el ,ustoValidator . >omo su%ro%io nombre indica se usa %ara crear normas de validación %ro%ias que no seada%ten a nin&una de las contem%ladas con los demás controles. Para conse&uirlo sedeinen unciones de validación en el cliente y en el servidor.

!as unciones de validación en el cliente se escriben en @avaScri%t o en #<Scri%t yse asocian con el control mediante la %ro%iedad ,lientValidation6unction. la uncióndeinida %uede tener cualquier nombre %ero debe tomar dos ar&umentos, as3)

4unction mi5alidador6origen* argumentos7

8

9

El %rimer ar&umento, origen, obtiene una reerencia al control de validación 1unelemento <span><@span>  de -TM! que contiene el mensa"e a mostrar2 que nos%ermite mostrarlo u ocultarlo o cambiar el contenido del mensa"e. El se&undoar&umento es más im%ortante %uesto que se trata de un ob"eto con dos %ro%iedades)Value y  /sValid . !a %rimera contiene el valor a validar que está etra3do del controlasi&nado en la %ro%iedad ontrol0o5alidate. !a se&unda se usa %ara indicar si la

validación $a tenido éito o no.

Por e"em%lo, %ara validar que el n:mero introducido en un control es im%ar,arrastrar3amos un control ustom5alidator   al ormulario Web, asi&nar3amos su%ro%iedad ontrol0o5alidate %ara que a%unte a un cam%o de teto, y establecer3amosla %ro%iedad lient5alidationFunction con el valor '#alida4m%ar' que es el nombre de launción @avaScri%t. A continuación incluir3amos en la cabecera de la %á&ina unra&mento de @avaScri%t como este)

Page 28: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 28/38

<script language=":a(ascript">

4unction 5alida'mpar6origen* args7

8

i4 6args;5alue , == 7 //$i es di(isi3le entre es par

args;'s5alid = 4alse

else

args;'s5alid = true

9

</script>

A$ora todav3a alta la validación en el servidor  que de $ec$o es la más im%ortante.Su uncionamiento es i&ual de sencillo. -ay que &estionar el evento ServerValidate

del control ustom5alidator . Este evento obtiene ar&umentos del ti%oServerValidate4ventArgs que son uncionalmente equivalentes a los que acabamosde ver en el caso del cliente, es decir, dis%onen de las %ro%iedades 5alue  e Is5alid .Para rematar nuestro e"em%lo con la validación en el servidor sólo es necesario escribirel si&uiente códi&o #<.NET)

>omo se %uede observar es uncionalmente idéntico al códi&o que escribimos %ara elcliente en @avaScri%t.

Nota)Este control de validación %ersonali+ada ya eist3a en versionesanteriores de ASP.NET. En éstas el evento de validación no se notiicabacuando el control a validar estaba vac3o. Para conservar la com%atibilidadel control >ustom#alidator de ASP.NET /.F traba"a de la misma manera.Sin embar&o es %osible or+ar la validación incluso con el cam%o vac3o siestablecemos la %ro%iedad Validate4pt#)ext   del ustom5alidator a0rue.

Page 29: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 29/38

Co,oca# !, 7oco !n !, !##o#5tra acción muy com:n a la $ora de validar datos en un ormulario es colocar el ocosobre el control que contiene inormación errónea. e este modo se acilita al usuariola introducción del nuevo valor %ues no tiene que activar el control con el ratón.Podemos $acer que los controles de validación $a&an esto %or nosotros con sólo

establecer a 0rue su %ro%iedad Set6ocus:n4rror . Esta caracter3stica es nueva enASP.NET 8.0 y %or lo tanto en ASP.NET /.F.

ontroles de usuario>omo ya $emos adelantado en la Sección anterior, a%arte de la com%le"a creación decontroles Web %ersonali+ados del estilo de los que vienen con ASP.NET, eiste unaorma rá%ida y sencilla de reutili+ar %artes com%letas de uncionalidad e intera+ deusuario. Para ello no es necesario tener %roundos conocimientos de la %lataorma.NET. Ni siquiera $acen alta conocimientos de -TM!. Se trata de los controles deusuario.

En esta Sección veremos qué son, cómo se crean y cómo se utili+an.

Cont#o,!s d! sa#io!os controles de usuario son tan áciles de crear que, de $ec$o, ya conoce casi todo loque necesita %ara construirlos. Se crean eactamente i&ual que los ormularios Web ydis%onen de un dise*ador visual idéntico que %ermite arrastrar otros controles sobre susu%ericie. e $ec$o cualquier ormulario Web 1%á&ina ASP62 %uede transormarsedirectamente en un control reutili+able con sólo unos %ocos cambios de sintais.

Para a*adir un nuevo control de usuario %ulse con el botón secundario sobre el nodora3+ del %royecto en el e%lorador de soluciones y esco"a la o%ción ' gregar 

elemento...'. En el diálo&o que a%arece 1ya sobradamente conocido2 seleccione elicono corres%ondiente a ,ontrol de usuario !e", como se ilustra en la si&uientei&ura)

Page 30: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 30/38

Figura 3.3.1.- =ilogo "ara a7adir un nue!o control de usuario.

Si se i"a en la i&ura detenidamente verá que, salvo %or el icono ele&ido, no $aydierencia al&una con a*adir un nuevo ormulario Web. e $ec$o la :nica dierencia

eistente en este %unto es la etensión quese le otor&ará al arc$ivo resultante, que es.ascx  en lu&ar de .as%.

El arc$ivo resultante se distin&ueácilmente en el e%lorador de %royectos%orque #isual Studio le asi&na un iconodierente 1vea la i&ura lateral2.

Al i&ual que un ormulario Web corrienteun control de usuario dis%one de undise*ador visual con doble vista 1)ise'o y?rigen2 y de un editor de códi&o asociadoen caso de $aber esco&ido la se%aración decódi&o e intera+ 1o%ción marcada en lai&ura anterior2.

el mismo modo están dis%onibles %araarrastrar sobre la su%ericie de dise*o los mismos controles (eb que en el caso de losormularios Web.

Page 31: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 31/38

!a %rimera dierencia con una %á&ina ASP6 la encontramos al ver las etiquetas queconstituyen la %arte de intera+ de usuario del control. En los ormularios a%arece al%rinci%io una directiva <%BPage %>, %ero en los controles la directiva se llama ;

<3,ontrol <= si bien se usa de un modo muy similar)

Figura 3.3.(.- ódigo origen de un control de usuario so%re el >ue se anarrastrado tres controles e%.

5tra dierencia undamental de un control con una %á&ina es que $ereda de la clase

5ser,ontrol  y no de Page. Sin embar&o ambas clases base $eredan a su ve+ de laclase )eplate,ontrol , %or lo que conservan multitud de caracter3sticas en com:n.

Figura 3.3.3.- ódigo de la clase code-%eside de un control de usuario. en el>ue se !e >ue sta ereda de Bserontrol .

e $ec$o la similitud es tal que el entorno de desarrollo le asi&na al mane"ador delevento ;oad del control el nombre Page(;oad   1en lu&ar de, %or e"em%lo,Aserontrol(;oad 2 como se observa en la i&ura.

D!9nición d! ,a 7nciona,idad p56,ica d!, cont#o, d! sa#io

Todo a %artir de a$ora es eactamente i&ual que en el caso de los ormularios Web.Podemos arrastrar cualquier control Web desde el cuadro de $erramientas sobre lasu%ericie del control, asi&nar sus %ro%iedades y recibir %ostCbac?s que &eneraneventos en los controles que $emos incluido.

Por su%uesto, como en esencia un control de usuario no es más que una clase de .NET,%odemos etenderla a*adiéndole nuestros %ro%ios métodos y %ro%iedades. Todos losmiembros %:blicos que a&re&uemos estarán dis%onibles desde la %á&ina que alber&ue

Page 32: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 32/38

al control del mismo modo que lo están las %ro%iedades y métodos de cualquier controlWeb normal. Esto es muy :til %ara enca%sular el acceso a ciertas uncionalidades que$ayamos incluido.

Por su%uesto los controles que coloquemos en la su%ericie del control se veránadecuadamente en la %á&ina que lo conten&a y se com%ortarán del modo es%erado,esto es, recibiendo eventos, conservando su estado en el 5ie6!tate, etc...

Uso d! ,os cont#o,!s d! sa#ioA$ora que ya sabemos crear controles de usuario veamos la orma de usarlos desdelos ormularios Web.

El modo más sencillo de incluir un control de usuario en una %á&ina ASP6 essim%lemente arrastrándolo desde el e%lorador de %royectos sobre su su%ericie dedise*o. Esto $ará que se visualice el control com%leto dentro de la %á&ina)

Figura 3.3.4.- ontrol de usuario arrastrado so%re la su"er9icie de un9orulario e% &los "untos rojos se usan "ara destacarlo no esta%an en la iagen original*.

Nota)#isual Studio 8070 orece un mayor so%orte en tiem%o de dise*o %aralos controles de usuario que %ermite ver el contenido del control ya"ustar sus %ro%iedades desde el e%lorador de %ro%iedades. Enversiones anteriores de #isual Studio .NET lo :nico que se ve3a de estoscontroles era un cuadro de color &ris con su nombre y eran %or tantomás di3cil traba"ar con ellos y enca"arlos en un dise*o &eneral.

>uando observamos el códi&o de la %á&ina ASP6 desde la que estamos utili+ando elcontrol de usuario, vemos que al %rinci%io de ésta se $a incluido una directiva

>egister )

ui+á el atributo más im%ortante de esta directiva sea el :ltimo, )agPre$ix . El valorasi&nado a él será el que se utilice %ara distin&uir de manera :nica un control deusuario dentro de la %á&ina. e este modo se %ueden utili+ar sin %roblemas controlesde usuario con el mismo nombre en una misma %á&ina. As3, se&:n la l3nea anterior

Page 33: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 33/38

%odr3amos deinir en la %á&ina un control del ti%o &icontrol usando una sintais comoesta)

!as %ro%iedades que $ayamos deinido %ara la clase &icontrol  se %ueden establecermediante atributos 1al i&ual que 4 en la l3nea anterior, %or e"em%lo2 siem%re que setrate de ti%os sim%les.

Podemos modiicar la directiva Je&ister %ara incluir un %rei"o que nos &uste más o seamás descri%tivo que el que #isual Studio $a %uesto %or deecto.

Ca#ga diná)ica d! cont#o,!s d! sa#io5tro modo de $acer uso de los controles de usuario es car&arlos dinámicamente se&:nlos necesitemos. El método (oad,ontrol  de la clase Page o del ormulario de la %á&inaes el que nos va a ayudar a conse&uirlo. Sólo $ay que %asarle como ar&umento el

nombre del arc$ivo AS>6 que contiene la deinición del control de usuario, de modosimilar a este)

im c As )ontrol

c = Me;Load)ontrol6"Micontrol;ascx"7

Me;orm;)ontrols;Add6c7

En lu&ar de usar un ti%o &enérico 1ontrol 2 como en este ra&mento también %odemosusarlo como el verdadero ti%o del control y as3 llamar a sus métodos y %ro%iedadesantes de a*adirlo al ormulario)

im c As )ontrol

im mi) As Micontrol

c = Me;Load)ontrol6"Micontrol;ascx"7

mi) = )?ype6c* Micontrol7

mi);5alor'nicial = "1ien(enido a esta p@gina"

Me;orm;)ontrols;Add6mi)7

En este e"em%lo $emos usado el control con su verdadero ti%o %ara %oder asi&nar la%ro%iedad 5alorInicial antes de a&re&arlo a la %á&ina.

Page 34: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 34/38

Tcnicas de tra%ajo # consejos !ariosPara inali+ar con este intenso módulo de undamentos de las a%licaciones ASP.NETvamos a comentar al&unas técnicas de traba"o comunes que le serán de ayuda en suque$acer diario.

T'cnicas d! t#a6a*o 4 cons!*os :a#ios

Na:!gación !nt#! páginasAntes de nada me %arece necesario comentar que en las a%licaciones ASP.NET seutili+an se&uramente muc$as menos %á&inas que en el caso de que la mismaa%licación estuviese escrita con ASP clásico. Esto se debe a que, &racias a los %ostCbac? y los corres%ondientes eventos de servidor se enca%sula más la uncionalidad enun sólo arc$ivo. Por e"em%lo en una a%licación ASP /.0 clásica %ara reco&er los datosde un usuario con muc$a %robabilidad escribir3amos dos 1o incluso tres o cuatro2%á&inas) la %á&ina -TM! con el ormulario, la %á&ina ASP a la que se env3an los datosdel ormulario y %uede que una %á&ina o dos %ara inormar al usuario del éito o del

racaso de su acción. En ASP.NET todo esto se resolver3a con una sola %á&ina ASP6, unevento de servidor y %robablemente mostrando y ocultando controles Web desde dic$oevento.

Por su%uesto una a%licación estará ormada de todos modos %or un n:mero más omenos elevado de %á&inas a las que se debe diri&ir al usuario. Eisten diversasmaneras de diri&ir a un usuario $acia otra %á&ina o recurso de la a%licación.

!a %rimera de ellas, y la más sencilla, consiste en utili+ar controles del ti%o 8#per(in- 

que tiene este as%ecto en el cuadro de $erramientas) . Estableciendo su

%ro%iedad avigate5rl  estaremos indicando a qué %á&ina queremos enviar al usuariocuando %ulse sobre el enlace resultante. Si la %á&ina es una de las que %ertenecen anuestra a%licación será muy ácil seleccionarla &racias al diálo&o es%ecial que a%arece%ara ello)

Page 35: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 35/38

Figura 3.4.1.- =ilogo de seSección de "ginas de nuestra a"licación.

Además si a"ustamos la %ro%iedad 0e#t   de este control ese será el teto que semuestre %ara el enlace de la %á&ina. Es %osible utili+ar un &ráico en lu&ar de teto%ara el enlace si se utili+a la %ro%iedad /age5rl .

Nota)Eisten controles es%eciali+ados en crear árboles de nave&ación en una%á&ina %ero %or deba"o usan enlaces como éstos. !os estudiaremos enun %róimo módulo.

!a otra manera de enviar a los usuarios a una %á&ina %ro%ia o a"ena consiste en $aceruso del método >edirect de la clase 8ttp>esponse del conteto de llamada de la%á&ina. As3 %odremos controlar desde un evento de servidor a dónde enviaremos alusuario. Por e"em%lo, si queremos enviarlo a una %á&ina dierente se&:n lo que $ayaesco&ido en un control de seSección %odr3amos escribir al&o similar a esto en el eventode %ulsación de un botón)

'4 opciones;List'ndex = ?hen

Response;Redirect6"opcion2;aspx"7

lse

Response;Redirect6"opcion;aspx"7

nd '4

Page 36: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 36/38

El método edirect env3a al nave&ador del usuario una cabecera es%ecial de redirecciónque le indica que, en lu&ar de descar&ar los contenidos de la %á&ina actual, debesolicitar una nueva. Esto %rovoca una nueva %etición de %á&ina desde el nave&ador %orlo que no es la orma de nave&ación de mayor rendimiento 1$ay el doble de via"es alservidor que en un enlace directo2. Sin embar&o dota de &ran leibilidad a la $ora dedecidir qué $acer ante la solicitud de %á&ina de un usuario o %ara rediri&ir al inal de un%roceso e"ecutado en el servidor.

En:;o d! datos !nt#! páginas>omo $emos visto el com%ortamiento normal durante la %ulsación de un botón u otroevento de controles servidor es el de reali+ar un  post-4ac7  a la %á&ina actual. Sinembar&o %uede $aber ocasiones en las que, %or el motivo que sea, se necesita reali+arese env3o de datos a otra %á&ina dierente, %ero eso s3, conservando el acceso a todoslos controles y datos de la %á&ina ori&inal 1que como sabemos están contenidos en el5ie6!tate2.

ASP.NET 8.0 $a a*adido una nueva uncionalidad denominada ,ross Page Posting,que %ermite %recisamente esto. Para conse&uirlo lo :nico que $ay que $acer es a"ustarla %ro%iedad Post*ac-5rl del control cuyos eventos queremos &estionar desde otra%á&ina asi&nándole la ruta virtual de ésta :ltima.

!os datos se reciben en la otra %á&ina %ero todav3a tenemos acceso a los datos de la%á&ina ori&inal a través de la %ro%iedad PreviousPage de la nueva. Se trata de unob"eto Pa&e reconstruido a %artir del 5ie6!tate recibido. Si la usamos as3, de modo&enérico, tendremos que utili+ar el método 6ind,ontrol  de la clase Page %ara locali+arcualquier control que $ubiese en la %á&ina ori&inal. Por su%uesto si ambas %á&inas%ertenecen al mismo es%acio de nombres 1o lo $emos declarado2 %odemos or+ar el

uso de la %á&ina como la clase ori&inal de ésta usando 0=pe y acceder directamente asus métodos, %ro%iedades y controles.

También es %osible determinar desde una %á&ina si los datos que está recibiendo sonde su %ro%io PostCbac? o %ertenece a otra %á&ina mediante la %ro%iedad /s,rossPagePost*ac- , que es muy similar a la %ro%iedad IsPost,ac7 que ya $emosestudiado.

Esta técnica es de un uso %oco recuente %ero se trata de una novedad %oco conocidaque me $a %arecido interesante incluir aqu3.

T#ans7!#i# !, cont#o, !nt#! páginasA veces %uede ser :til %rocesar el códi&o de una %á&ina y "usto des%ués transerir elcontrol a otra %á&ina e"ecutando también su códi&o. El método )rans$er  de la clase8ttpServer e"ecuta dinámicamente el códi&o de una %á&ina desde otra cualquiera.

!a orma de $acerlo es la si&uiente)

$er(er;?rans4er6"otrapagina;aspx"7

Page 37: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 37/38

Al contrario que el uso de edirect , !erer.0rans*er  no cambia la GJ! que el usuario veen su nave&ador ya que desde uera no se observa nin&una variación en la %á&inae"ecutada. Es una e"ecución en el servidor, sin redirección en el cliente.

Este método es análo&o al del mismo nombre en ASP clásico, si bien en ASP.NET suutilidad es menor %uesto que, como veremos, eisten maneras muc$o me"ores y másrecomendables de reutili+ar códi&o de uso com:n en las %á&inas.

R!ti,i8ación d! código !n na ap,icaciónA menudo, al escribir una a%licación, tenemos necesidades similares en diversas %artesde ésta. Por ello ser3a absurdo escribir una y otra ve+ el mismo códi&o dentro de losmane"adores, al car&ar una %á&ina y demás eventos. !o me"or es enca%sular el códi&oen diversos métodos y llamar a éstos cuando sea necesario. Todo esto sonará de%ero&rullo a cualquier %ro&ramador e%erimentado.

En ASP clásico, %or e"em%lo, se sol3an a&ru%ar las unciones de uso com:n dentro de

arc$ivos de inclusión que lue&o se utili+aban en las dierentes %á&inas &racias a unadirectiva <-- include -->. Si bien esto constitu3a una manera básica de reutili+arcódi&o no orec3a la leibilidad de un len&ua"e ca%a+ de crear bibliotecas de ob"etos ymétodos.

En .NET es %osible crear nuevas clases que enca%sulen uncionalidades comunes y quesean reutili+ables en cualquier %unto de la a%licación. En ASP.NET 8.0 eisten una seriede car%etas con nombres es%eciales que cuel&an de la car%eta %rinci%al de la a%licacióny que llevan asociado un com%ortamiento es%ecial. Gna de estas car%etas es App?,ode. <ásicamente, todo el código @ue se colo@ue "a&o esta carpeta se

copila de anera autoática.

Tal y como $emos estudiado anteriormente, cuando se solicita una %á&ina ésta secom%ila de manera automática "unto con su arc$ivo de 'codeCbeside' de orma que, amedida que se accede a las dierentes %artes de una a%licación se va com%ilando %orcom%leto. adas las caracter3sticas de #isual Studio, el códi&o residente en arc$ivosque no sean %á&inas o clases %arciales de 'codeCbeside' no se com%ila ya que "amásnave&amos %or él ni se reerencia desde otras %á&inas. !a ece%ción a esta re&la es elcódi&o que coloquemos en la car%eta  pp(ode que se com%ila automáticamente alcomen+ar la a%licación.

Por ello, una buena orma de reutili+ar códi&o entre %á&inas es a&re&ar clases

es%eciali+adas a la car%eta  pp(ode. e $ec$o si %resionamos con el botónsecundario sobre el %royecto en el e%lorador de soluciones y a&re&amos un nuevoelemento de ti%o >lase se nos mostrará una advertencia diciendo, &rosso modo, quedebemos a*adirla a  pp(ode  si queremos que uncione. 4ncluso se creaautomáticamente la car%eta si no lo $emos $ec$o ya con anterioridad)

Page 38: Fundamentos Aplicaciones Web

7/17/2019 Fundamentos Aplicaciones Web

http://slidepdf.com/reader/full/fundamentos-aplicaciones-web 38/38

Figura 3.4.(.- Ad!ertencia "ara colocar código en A""ode &a"lica%le a'isual Studio ()1) ó su"erior*.

4ncluso si intentamos a&re&ar un nuevo elemento a la car%eta A%%H>ode sólo se nosorecerá la %osibilidad de incluir nuevas clases, arc$ivos de teto 1%ara comentarios,%or e"em%lo2 o )ata!ets. Estos :ltimos son ataSets ti%ados que no de"an de serclases con un dise*ador asociado como veremos en el si&uiente módulo.

Gna ve+ creadas nuevas clases en estas car%eta %odemos a*adirle métodos,%ro%iedades y cam%os %ara dotarlas de la uncionalidad que requiramos. Por su%uestoson clases normales de .NET %or lo que %odremos derivarlas de otras clases %ara

obtener uncionalidad '&ratis', $acer que im%lementen interaces o incluirlas dentro demódulos o es%acios de nombres %ara ordenarlas.

Si lo que desea es com%artir códi&o entre distintas a%licaciones o enca%sularuncionalidad en una librer3a inde%endiente, %uede crear un %royecto de ti%o librer3a declases. Este %royecto &enera un arc$ivo .!! que %uede com%artir entre distintasa%licaciones. >on esto %odrá reutili+ar sus clases en tantos %royectos como quiera,incluso en distintos ti%os de %royectos como A%licaciones Web y A%licaciones Windo(s.

Nota)Si dis%one de la versión #isual Web evelo%er no %odrá &enerarbibliotecas !!.