Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller ASP Net
Taller ASP Net
com
Taller de ASP.NET
Autores del manual Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com: Pol Salvat Miguel Angel Alvarez Clikear.com
http://www.mistrucos.net (6 cap tulos! Director de DesarrolloWeb.com http://www.desarrolloweb.com (" cap tulos! http://www.cli#ear.com ($ cap tulo!
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
6na imagen (d(nde su scr ser, /-nti:obots.asp3! 6n input de tipo te3to+ con un id; type; 0rm<)odigo<.eguridad
En el c(digo => de la p,gina del registro declararemos una *ariable llamada b-nti>ots
?:egion @4embers@ Dim b-nti>ots -s >oolean ; 8alse ?End :egion
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
"
En el /age<&oad:
50 'ot 5s/ost>ac# Then .ession(@-nti>ots@! ; Aenerate:andom)ode(! Else B)omprobamos el c(digo antibots 50 0rm<)odigo<.eguridad.=alue ; .ession(@-nti>ots@!.To.tring(! Then b-nti>ots ; True Else b-nti>ots ; 8alse 4e..ession(@-nti>ots@! ; Aenerate:andom)ode(! End 50 End 50
Tenemos 1ue crear la 0unci(n Aenerate:andom)ode para generar un c(digo de seguridad al azar
?:egion @Aenerate:andom)ode@ /ri*ate 8unction Aenerate:andom)ode(! -s .tring Dim random -s 'ew :andom Dim s -s .tring ; @@ Dim i -s 5ntC" ; D Dim i)hr -s 5ntC" While (i EF 6! i)hr ; random.'e3t(GH+ ID! While i)hr JF KL -nd i)hr EF 6K i)hr ; random.'e3t(GH+ ID! End While s ; .tring.)oncat(s+ )hr(i)hr!.To.tring(!! i;iM$ End While :eturn s End 8unction ?End :egion
/ara seguir+ nos 0altar, crear la clase encargada de crear+ manipular y de0ormar el c(digo de seguridad generado en imagen
5mports 5mports 5mports 5mports 5mports .ystem .ystem.Drawing .ystem.Drawing.Drawing"D .ystem.Drawing.5maging .ystem.Drawing.Te3t
/ublic )lass 5magen-nti>ots Dim m<te3t -s .tring Dim m<width -s 5ntC" Dim m<height -s 5ntC" Dim m<0amily'ame -s .tring Dim m<image -s >itmap Dim m<random -s 'ew :andom ?:egion @/ropiedades de lectura@ /ublic :eadNnly /roperty Te3t(! -s .tring Aet :eturn m<te3t End Aet End /roperty /ublic :eadNnly /roperty Width(! -s 5ntC" Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n. C
Aet :eturn m<width End Aet End /roperty /ublic :eadNnly /roperty Oeight(! -s 5ntC" Aet :eturn m<height End Aet End /roperty /ublic :eadNnly /roperty 5mage(! -s >itmap Aet :eturn m<image End Aet End /roperty ?End :egion /ublic .ub 'ew(>y=al s -s .tring+ >y=al width -s 5ntC"+ >y=al height -s 5ntC"! 4e.m<te3t ; s 4e..etDimensions(width+ height! 4e.Aenerate5mage(! End .ub /ublic .ub 'ew(>y=al s -s .tring+ >y=al width -s 5ntC"+ >y=al height -s 5ntC"+ >y=al 0amily'ame -s .tring! 4e.m<te3t ; s 4e..etDimensions(width+ height! 4e..et8amily'ame(0amily'ame! 4e.Aenerate5mage(! End .ub /ri*ate .ub .etDimensions(>y=al width -s 5ntC"+ >y=al height -s 5ntC"! 50 width EF; D Then Throw 'ew -rgumentNutN0:angeE3ception(@width@+ width+ @-rgument out o0 range+ must be greater than zero.@! End 50 50 (height EF; D! Then Throw 'ew -rgumentNutN0:angeE3ception(@height@+ height+ @-rgument out o0 range+ must be greater than zero.@! End 50 4e.m<width ; width 4e.m<height ; height End .ub /ri*ate .ub .et8amily'ame(>y=al 0amily'ame -s .tring! Try Dim 0ont -s 8ont ; 'ew 8ont(0amily'ame+ $".D8! 4e.m<0amily'ame ; 0amily'ame 0ont.Dispose(! )atch e3 -s E3ception 4e.m<0amily'ame ; .ystem.Drawing.8ont8amily.Aeneric.eri0.'ame End Try End .ub /ri*ate .ub Aenerate5mage(! Dim bitmap -s 'ew >itmap(4e.m<width+ 4e.m<height+ /i3el8ormat.8ormatC"bpp-rgb! B)reamos objeto gra0ico Dim g -s Araphics ; Araphics.8rom5mage(bitmap! g..moothing4ode ; .moothing4ode.-nti-lias Dim rect -s 'ew :ectangle8(D+ D+ 4e.m<width+ 4e.m<height!
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
B:ellenamos el 0ondo Dim hatch>rush -s 'ew Oatch>rush(Oatch.tyle..mall)on0etti+ )olor.&ightAray+ )olor.White! g.8ill:ectangle(hatch>rush+ rect! BEstablecemos la 0uente Dim size -s .ize8 Dim 0ont.ize -s .ingle ; rect.Oeight M $ Dim 0ont -s 8ont B-justa el tama7o de la 0uente Do 0ont.ize ; 0ont.ize P $ 0ont ; 'ew 8ont(4e.m<0amily'ame+ 0ont.ize+ 8ont.tyle.>old! size ; g.4easure.tring(4e.m<te3t+ 0ont! &oop While (size.Width JF rect.Width! BEstablece el 0ormato de te3to Dim 0ormat -s 'ew .tring8ormat 0ormat.-lignment ; .tring-lignment.)enter 0ormat.&ine-lignment ; .tring-lignment.)enter Dim path -s 'ew Araphics/ath path.-dd.tring(4e.m<te3t+ 0ont.8ont8amily+ )Type(0ont..tyle+ 5ntC"!+ 0ont..ize+ rect+ 0ormat! Dim * -s .ingle ; G.D8 Dim points -s .ystem.Drawing./oint8(! ; Q < 'ew .ystem.Drawing./oint8(m<random.'e3t()Type(rect.Width+ 5nteger!! / *+ m<random.'e3t()Type(rect.Oeight+ 5nteger!! / *!+ < 'ew .ystem.Drawing./oint8(rect.Width P m<random.'e3t()Type(rect.Width+ 5nteger!! / *+ m<random.'e3t()Type(rect.Oeight+ 5nteger!! / *!+ < 'ew .ystem.Drawing./oint8(m<random.'e3t()Type(rect.Width+ 5nteger!! / *+ rect.Oeight P m<random.'e3t()Type(rect.Oeight+ 5nteger!! / *!+ < 'ew .ystem.Drawing./oint8(rect.Width P m<random.'e3t()Type(rect.Width+ 5nteger!! / *+ rect.Oeight P m<random.'e3t()Type(rect.Oeight+ 5nteger!! / *!R Dim matri3 -s 'ew 4atri3 matri3.Translate($+ C! BDe0ormamos la imagen path.Warp(points+ rect+ matri3+ D! BDibuja el te3to hatch>rush ; 'ew Oatch>rush(Oatch.tyle.NutlinedDiamond+ )olor.Nrange+ )olor.>lue=iolet! g.8ill/ath(hatch>rush+ path! B-7ade e0ectos Dim m -s 5ntC" ; 4ath.4a3()Type(rect.Width+ 5nteger!+ )Type(rect.Oeight+ 5nteger!! Dim i -s 5ntC" ; D While i EF )Type((rect.Width S rect.Oeight / CD.D8!+ 5ntC"! Dim 3 -s 5ntC" ; m<random.'e3t()Type(rect.Width+ 5nteger!! Dim y -s 5ntC" ; m<random.'e3t()Type(rect.Oeight+ 5nteger!! Dim w -s 5ntC" ; m<random.'e3t()Type(m / KD+ 5nteger!! Dim h -s 5ntC" ; m<random.'e3t()Type(m / KD+ 5nteger!! g.8illEllipse(hatch>rush+ 3+ y+ w+ h! i;iM$ End While 0ont.Dispose(! hatch>rush.Dispose(! g.Dispose(! BEstablece la imagen 4e.m<image ; bitmap End .ub
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
End )lass
-hora en el proyecto crearemos la p,gina 1ue apunta nuestra imagen (el primer control 1ue hemos agregado en el proyecto+ y en el /age<&oad pondremos este c(digo:
/ri*ate .ub /age<&oad(>y=al sender -s .ystem.Nbject+ >y=al e -s .ystem.E*ent-rgs! Oandles 4y>ase.&oad B)reamos una imagen creando el te3to guardado en la sesion Dim ab -s 'ew 5magen-nti>ots(.ession(@-nti>ots@!.To.tring(!+ "DD+ KD+ @-rial@! B)ambiamos la respuesta al cliente a tipo @imagen/jpeg@ 4e.:esponse.)lear(! 4e.:esponse.)ontentType ; @image/jpeg@ B.al*amos la imagen en el :esponse ab.5mage..a*e(4e.:esponse.Nutput.tream+ 5mage8ormat.Tpeg! End .ub
U para terminar+ en el 0ormulario del registro+ d(nde hemos agregado los controles+ en el bot(n del submit+ utilizar esta condici(n:
50 b-nti>ots Then B )reamos el registro Else B El c(digo de seguridad no est, bien colocado End i0
/uedes descargarte todo el c(digo 0uente de pulsando a1u . Artculo por Pol Salvat
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
Dim End/oint -s 5nteger ; html.5nde3N0(@/JF@+ .tart/oint! M " Dim *iewstate5nput -s .tring ; html..ubstring(.tart/oint+ End/oint P .tart/oint! html ; html.:emo*e(.tart/oint+ End/oint P .tart/oint! Dim 8ormEnd.tart -s 5nteger ; html.5nde3N0(@EF/0ormJF@! P $ 50 8ormEnd.tart JF; D Then html ; html.5nsert(8ormEnd.tart+ *iewstate5nput! End 50 End 50 writer.Write(html! End .ub
C#digo en C&
protected o*erride *oid :ender(.ystem.Web.65.OtmlTe3tWriter writer! Q .ystem.5N..tringWriter stringWriter ; new .ystem.5N..tringWriter(!F OtmlTe3tWriter htmlWriter ; new OtmlTe3tWriter(stringWriter!F base.:ender(htmlWriter!F string html ; stringWriter.To.tring(!F int start/oint ; html.5nde3N0(@EFinput type;X@hiddenX@ name;X@<<=5EW.T-TEX@@!F i0 (start/oint JF; D!Q int end/oint ; html.5nde3N0(@/JF@+ start/oint! M "F string *iewstate5nput ; html..ubstring(start/oint+ end/oint P start/oint!F html ; html.:emo*e(etart/oint+ end/oint P start/oint!F int 0ormEnd.tart ; html.5nde3N0(@EF/0ormJF@!F i0 (0ormEnd.tart JF; D!Q html ; html.5nsert(0ormEnd.tart+ @Xn@ M *iewstate5nput!FRR writer.Write(html!FR
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
/odemos utilizar el with para no tener 1ue escribir todo el rato e.item:
With e.5tem .)ells(D!.Te3t ; str5mg.To.tring .)ells(D!.Oorizontal-lign ; Oorizontal-lign.)enter .)ells(D!.=ertical-lign ; =ertical-lign.Top .)ells(D!.Width ; 6nit./i3el(CD! .)ells(D!.*isible;8alse End with
/ara acabar+ hay 1ue comentar 1ue una 0ila de un grid puede ser de la cabecera o no. .i es cabecera:
50 e.5tem.5temType ; &ist5temType.Oeader Then
.i es un elemento normal:
-nte todo es importante hablar de la gratuidad del so0tware. En contra de lo 1ue muchas *eces ocurre con los sistemas 4icroso0t+ podemos utilizar libremente este programa para cual1uier prop(sito. /odemos modi0icarlo+ redistribuirlo o+ incluso+ *enderlo o prestar soporte t2cnico. &a Vnica condici(n es 1ue debemos mencionar la procedencia del so0tware+ en la p,gina o el c(digo OT4&. Dot'et'u#e tiene muchas posibilidades+ algunas de ellas aut2nticamente interesantes. Entre ellas podemos encontrar:
)reaci(n de mVltiples portales utilizando un mismo c(digo y base de datos+ lo 1ue signi0ica 1ue se pueden crear *arios sitios utilizando un mismo alojamiento 1ue soporte -./.'ET. :egistro de usuarios y completa personalizaci(n del portal dependiendo del tipo de usuario. /osibilidad de crear ser*icios o contenidos de acceso restringido+ con enlace directo a m2todos de pago para los usuarios 1ue deseen acceder a esos ser*icios. -cceso de administrador para gestionar los contenidos y ser*icios. -cceso a estad sticas completas del uso del sitio. .istema de gesti(n de banners integrado. -cceso de superusuario para crear nue*os portales. /osibilidad de crear s#ins (apariencias! por el administrador para dotar de un aspecto al portal totalmente personalizado. /ermite trabajar con *arias bases de datos distintas+ aun1ue para algunas hace 0alta algVn m(dulo adicional de soporte. 4Vltiples tipos de contenidos 1ue se pueden administrar. Entre ellos 'oticias+ contacto+ 0oros de discusi(n+ documentos+ e*entos+ etc. 6na larga lista 1ue se puede ampliar con una serie de m(dulos disponibles.
M#dulos de (otNetNuke &os m(dulos son piezas del programa 1ue o0recen soporte a 0uncionalidades espec 0icas para los usuarios del portal. &a *ersi(n actual de Dot'et'u#e dispone de "G m(dulos para realizar tareas di*ersas como gesti(n de usuarios+ calendario de e*entos+ banners+ noticias+ etc. -dem,s+ e3isten otros m(dulos gratuitos+ o0recidos por portales 1ue tratan sobre Dot'et'u#e y tambi2n algunos de pago 1ue o0recen ciertas empresas y desarrolladores. &os m(dulos pueden instalarse+ desinstalarse y con0igurarse siempre 1ue se 1uiera+ para dotar al portal de las 0uncionalidades 1ue necesitamos en cada momento. Entre los m(dulos disponibles en la *ersi(n inicial se encuentran los siguientes:
Aesti(n de cuentas 'oticias o no*edades Aesti(n de banners )ontacto+ 1ue o0rece la posibilidad de en*iar correo a personas o grupos de personas 8oros de discusi(n+ con temas con0igurables Aesti(n de documentos+ con opci(n a descarga o *isualizaci(n )alendario de e*entos 8-9s &in#s >Vs1uedas Encuestas
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
&a lista toda* a continVa con otros m(dulos para temas m,s espec 0icos o tan especiales como ser*icio de in0ormaci(n del tiempo o un ser*icio Whois+ para hacer bVs1uedas de registro de nombres de dominios. Algunos e)em!los de !*ginas realizadas con (otNetNuke E3isten ya bastantes ejemplos de buenos trabajos realizados con Dot'et'u#e. Entre los mejores hay algunos contribuidores de desarrollo de la plata0orma. G>irc#head http://www.Gbirc#head.com En esta p,gina+ aparte de un agradable dise7o+ podremos encontrar nue*os m(dulos gratuitos para e3tender Dot'et'u#e+ como ,lbum de 0otos o Ti#ers de ndices burs,tiles. >yDesignWebsights http://www.bydesignwebsights.com/ N0recen soporte y recursos sobre Dot'et'u#e. En el momento en el 1ue se escribi( este art culo o0rec an alojamiento gratuito sobre la plata0orma. )iber Ouis http://www.cyberhuis.com/ Ntro sitio de recursos con posibilidad de descargar nue*os m(dulos gratuitos. Dot'et'u#e .#ins http://www.dnns#ins.com6n sitio para encontrar nue*as apariencias para Dot'et'u#e. Oay 1ue registrarse para acceder a los s#ins+ pero puede merecer la pena por1ue tienen disponibles decenas de dise7os distintos. Dot'et'u#ed http://www.dotnetnu#ed.com Ntro ejemplo de sitio realizado con Dot'et'u#e 1ue o0rece tambi2n recursos de utilidad. .nowco*ered http://www.snowco*ered.com 6na p,gina m,s comercial sobre Dot'et'u#e+ en la 1ue se o0recen recursos Vtiles+ aun1ue la mayor a de las *eces de pago. C#mo obtener (otNetNuke En la p,gina de inicio de Dot'et'u#e (http://dotnetnu#e.com! podemos encontrar mucha m,s in0ormaci(n e instrucciones para instalar Dot'et'u#e. /ara empezar hay disponible una gu a de instalaci(n del so0tware 1ue e3plica paso a paso el proceso de instalaci(n. Tambi2n disponen de gu as de usuario y de administrador del portal+ as como di*ersa documentaci(n y 8-9s. /ara descargar Dot'et'u#e hay 1ue registrarse en la p,gina y hacer el inicio de sesi(n. /odremos encontrar *arios 0icheros de descarga con distintas *ersiones del programa. Conclusi#n Dot 'et 'u#e es una buena muestra de lo 1ue se puede hacer con .'ET y del empe7o de ciertas comunidades+ junto con 4icroso0t+ de popularizar el uso de so0tware libre en esta nue*a plata0orma de desarrollo. E0ecti*amente+ se trata de un so0tware gratuito desarrollado por una comunidad de personas a 1ue se sienten a gusto trabajando con sistemas 4icroso0t y 1ue desean popularizar sus herramientas. El producto del trabajo lo podemos *er en dotnetnu#e.com (http://dotnetnu#e.com! y en un primer *istazo parece 1ue han conseguido una buena herramienta.
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$D
Multicultura en ASP.NET
Cr+ditos Este art culo nos lo o0rece Clikear.com+ una web dedicada por completo a .'ET+ 1ue o0rece alojar tus p,ginas -./.'ET gratuitamente.
En este articulo presentamos un ejemplo de una pagina -./ .'ET para conocer las clases 1ue sir*en para hacer una web multicultura+ una de las nue*as e interesantes caracter sticas de la plata0orma .'ET. /resentamos una pagina en la 1ue se nos muestra los di0erentes 0ormatos de hora+ 0echa+ y numeros en distintos tipos de con0iguraciones para distintas culturas. Estudiando este ejemplo el lector podr, conocer algunos de los metodos mas usados de la clase .ystem.Alobalization+ 1ue se utiliza para crear webs multiculturales. .e puede descargar el archi*o comprimido con el ejemplo. Artculo por &li$ear.com
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$$
Esto signi0ica 1ue necesitamos crear dos procesos para ejecutar las distintas *ersiones de -./.'et. Esta opci(n la podemos con0igurar por cada website 1ue tengamos+ podr amos incluso tener n grupos distintos. Oay 1ue a7adir 1ue cada grupo correr, en una nue*a instancia de wCwp.e3e+ y 1ue esto implica el consumo de recursos de :-4 (entre "D a GD megas! para cada grupo como m nimo+ y 1ue subir, en relaci(n del uso de la web. /ara crear un grupo de aplicaciones+ apretaremos bot(n derecho sobre 45 /) y seleccionaremos -dministrar
En el menV de la iz1uierda+ localizaremos -dministrador de 5nternet 5n0ormation .er*ices (55.! y desplegaremos la carpeta @Aupos de aplicaciones@
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$"
Encima de @Arupo de aplicaciones@ apretaremos bot(n derecho del rat(n+ seleccionaremos @'ue*o@+ Arupo de aplicaciones.
En el 5d. De grupo de aplicaciones le pondremos el nombre 1ue 1ueramos (en este ejemplo+ -./<'ET<"<D!
-hora en la carpeta de @Arupo de aplicaciones@ podemos obser*ar el nue*o grupo de aplicaciones 1ue acabamos de crear -./<'ET<"<D
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$C
/ara asignar el website a nuestro nue*o grupo de aplicaciones+ pulsaremos encima del sitio web bot(n derecho del rat(n+ propiedades+ y en la pesta7a @Directorio particular@+ en la parte de abajo+ donde pone @Arupo de aplicaciones@ seleccionaremos nuestro nue*o grupo de aplicaciones
-plicaremos y nuestra web en -./.'ET ".D 0uncionar, a la per0ecci(n. Artculo por Pol Salvat
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$G
Dim 8ontDate -s 'ew 8ont(@=erdana@+ L! Dim wb" -s 'ew .olid>rush()olor.>lac#! Dim 3 -s 5ntC" ; PKD Dim ma3=alue -s 5ntC" ; D Bcalculo del m,3imo *alor de la gr,0ica i;D While i EF l<arr.)ount 50 l<arr(i! JF ma3=alue Then ma3=alue ; l<arr(i! End 50 i M; " End While Bcreaci(n de todos los rect,ngulos de la gr,0ica i;D While i EF l<arr.)ount 3 M; LD Dim au3 -s 5ntC" au3 ; (l<arr(i! S $HI! / (ma3=alue M "DD! objAraphic.8ill:ectangle(orange+ 3+ $HI P au3+ GD+ au3! /oint=alue.Y ; 3 /ointDate.Y ; 3 P $D objAraphic.Draw.tring(l<arr(i!.To.tring+ obj8ont+ wb"+ /oint=alue! objAraphic.Draw.tring(l<arr(i M $!.To.tring+ 8ontDate+ wb"+ /ointDate! i M; " End While :esponse.)ontentType ; @image/gi0@ obj>itmap..a*e(:esponse.Nutput.tream+ 5mage8ormat.Ai0! End .ub End )lass
/uedes descargarte todo el ejemplo desde a1u Artculo por Pol Salvat
Taller de ASP.NET: www.desarrolloweb.com/manuales/taller as! net."tml % &os manuales de DesarrolloWeb.com tienen el copyright de sus autores. 'o reproducir sin autorizaci(n.
$6