tag:blogger.com,1999:blog-59081394295695962282024-02-18T18:06:44.971-08:00Recursos de programaciónEn este blog encontrará soluciones a los problemas más frecuentes a los que se enfrenta un programador día a día.JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-5908139429569596228.post-54616367401895190552011-10-13T00:16:00.000-07:002011-10-13T00:17:55.607-07:00Cómo tener éxito en la WebMuchos piensan que, por el sólo hecho de estar en internet, su empresa tendrá más éxito. Y esto no es así. Para que una empresa pueda prosperar de la mano de Internet se deben dedicar mucho tiempo y recursos. <br />
<br />
Una Web no deja de ser una herramienta, como un martillo, unas tenazas o un destornillador. ¿Qué ocurre si compramos un martillo y nos sentamos a mirar que pasa? no ocurrirá nada, si no se dan martillazos no ocurrirá nada. Lo mismo pasa con las Web, muchas empresas las contratan y esperan impacientes a que lleguen miles de clientes deseosos de comprar. La creación de una Web es sólo el primer paso, después hay que trabajar el posicionamiento, mantener unos contenidos de calidad, estudiar las Webs de la competencia, así como todas aquellas acciones que nos permitan llegar a nuestros objetivos.<br />
<br />
Sigamos con el simil de las herramientas. Cuando una persona desea adquirir un vehículo para su empresa, busca en el mercado aquel que cumpla con sus necesidades: capacidad, consumo, velocidad, etc. ¿Ocurre lo mismo cuando quieren adquirir una Web? No siempre. Y esto es un problema, ya que si no se tiene claro lo que se necesita, lo más normal es que no se alcancen los objetivos previstos.<br />
<br />
A modo de simil, he mostrado alguno de los problemas por los que muchas empresas fracasan en su intento de dar el salto a la WEB, pero hay más. Algunos de ellos son:<br />
<br />
<ul><li><strong>Falta de profesionalidad</strong>. Muchas personas de baja cualificación se dedican al diseño y desarrollo de aplicaciones Web. Muchas empresas, buscando precios económicos, dejan la imagen de su empresa en manos de personas poco profesionales. Si un cliente potencial accede a una Web con fallos, lo más normal es que recele de la calidad de los productos que se ofrecen, y se vaya.</li>
<li><strong>Productos y/o servicios de baja calidad</strong>. Si los productos y/o servicios que se ofrecen no son competitivos, lo más normal es que una buena aplicación sirva de poco.</li>
</ul>Es importante destacar que una Web de mala calidad puede perjudicar seriamente la imagen de una empresa. Hoy en día, clientes, proveedores, demandantes de empleo, etc., antes de contactar con una empresa intentan buscar alguna referencia en Internet. Si la imagen de la empresa no es la que esperaban,quizas nuncan contanten con ella. Recuerde:<br />
<blockquote>Internet puede hacer grande a una empresa pequeña, pero también puede hacer pequeña a una empresa grande.</blockquote>Hemos hablado sobre las principales causas del fracaso de una Web y de sus posibles consecuencias. Ahora daremos algunas claves para tener éxito en la Web:<br />
<br />
<br />
<span style="font-size: large;"><strong>Ofertar productos y/o servicios competitivos</strong></span><br />
<br />
Esto es lo principal. Si no se ofrecen productos y/o servicios competitivos todo lo demás no importa. En ningún ámbito la competencia es tan brutal como en Internet. Si un cliente accede a una Web y no encuentra lo que busca en pocos segundo se irá, la competencia está a un sólo clic.<br />
<br />
<span style="font-size: large;"></span><span style="font-size: large;"><strong>Contar con un equipo multidisciplinar</strong></span><br />
<br />
En el desarrollo de una Web suelen intervenir programadores y diseñadores gráficos. Estos dos perfiles son suficientes para crear una Web de calidad. Pero Web debe vender, de nada sirve una aplicación expectacular si no tiene la capacidad de captar y estimular a los clientes. Por ello, es fundamental la participación de una persona con conocimientos de marketing. Además, el propio cliente debe participar activamente en el desarrollo, porque es el que mejor conoce sus productos y el entorno donde se mueve su empresa.<br />
<br />
<br />
<span style="font-size: large;"><strong>Ser pacientes</strong></span><br />
<br />
A menos que se lance una campaña fuerte de promoción, los resultados pueden tardar meses en llegar. No por ello, hay que dejar de trabajar el contenido, la promoción y el posicionamiento. No hay nada que de peor imagen que un contenido desactualizado.JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.com0tag:blogger.com,1999:blog-5908139429569596228.post-7037554111867777202011-09-19T11:56:00.001-07:002011-09-19T12:22:40.840-07:00Función para obtener Id de video youtube(fácil)<i>En esta entrada comentaré una sencilla función para obtener el ID de un video de youtube a partir de su URL.</i><br />
<br />
<h4>Herramientas y tecnologías utilizadas:</h4><ul><li><span style="font-family: Arial, Helvetica, sans-serif;">ASP.NET 3.5</span></li>
<li><span style="font-family: Arial;">VB.NET</span></li>
</ul><br />
<h4>Descripción de la función ObtenerIdYoutube</h4>Esta es una sencilla función que devuelve el identificador de un video youtube a partir de su URL. Si la URL no es válida, o es incorrecta, devuelve una cadena vacía.<br />
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">Private</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"> <span style="color: blue;">Function</span> ObtenerIdYoutube(<span style="color: blue;">ByVal</span> strURL <span style="color: blue;">As</span> <span style="color: blue;">String</span>) <span style="color: blue;">As</span> <span style="color: blue;">String</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span style="color: green; font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;">'La URL debe contener al menos 42 caracteres.</span><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">If</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"> strURL.Length >= 42 <span style="color: blue;">Then</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Dim</span> idVideo <span style="color: blue;">As</span> <span style="color: blue;">String</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Quitamos espacios en blanco al principio y al final.</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span>strURL = Trim(strURL)</span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Comprobamos el inicio de la cadena.</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Debe comenzar por: http://www.youtube.com/watch?v.</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Dim</span> posicion <span style="color: blue;">As</span> <span style="color: blue;">Integer</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span>posicion = InStr(strURL, <span style="color: #a31515;">"http://www.youtube.com/watch?v="</span>)</span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="color: green;"></span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none; tab-stops: 50.95pt;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span><span style="color: green;">'Si encontramos la cadena seguimos.</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">If</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"> posicion = 1 <span style="color: blue;">Then</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none; tab-stops: 50.95pt;"><span style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span style="color: green; font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;">'Eliminamos todo lo que está antes del ID.</span><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">idVideo = Replace(strURL, <span style="color: #a31515;">"http://www.youtube.com/watch?v="</span>, <span style="color: #a31515;">""</span>)</span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none; tab-stops: 50.95pt;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Quitamos todo lo que está después.</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">idVideo = idVideo.Substring(0, 11)</span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Comprobamos que el valor concuerda.</span><span style="mso-spacerun: yes;"> </span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span></span><span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;">If</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"> idVideo <> <span style="color: #a31515;">""</span> <span style="color: blue;">Then</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="color: blue;">If</span> idVideo.Length = 11 <span style="color: blue;">Then</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span>Return</span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"> idVideo</span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Else</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Debe tener 11 caracteres</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Return</span> <span style="color: #a31515;">""</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">End</span> <span style="color: blue;">If</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Else</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'no puede estar vacío</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Return</span> <span style="color: #a31515;">""</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">End</span> <span style="color: blue;">If</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Else</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="color: green;">'No comienza por</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Return</span> <span style="color: #a31515;">""</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">End</span> <span style="color: blue;">If</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: EN-GB; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Else</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: green;">'Una cadena demesiado pequeña para ser válida</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">Return</span> <span style="color: #a31515;">""</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">End</span> <span style="color: blue;">If</span></span></div><div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><br />
</div><div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="color: blue; font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;">End</span><span style="font-family: "Courier New"; font-size: 10pt; mso-no-proof: yes;"> <span style="color: blue;">Function</span></span></div>JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.com0tag:blogger.com,1999:blog-5908139429569596228.post-89615287683796446672011-08-23T02:32:00.000-07:002011-08-24T02:01:18.418-07:00Formularios: validar email, fecha, URL, etc...<h4>Validación de Email </h4><br />
Para validar emails en formularios utilizaremos el control <i>"regularexpressionvalidator"</i>. Este control verifica si la entrada cumple con el patrón especificado en la expresión regular de la propiedad <i>"validationexpression"</i>.<br />
<br />
En el ejemplo vemos un control de tipo texto(txt_Email) que tiene asociado un control de validación(rev_EmailCorrecto).<br />
<br />
<br />
<pre class="control"><asp:TextBox <span class="atributoControl">ID=</span><span class="cadenaControl">"txt_Email" </span> <span class="atributoControl">runat=</span><span class="cadenaControl">"server"</span>></asp:TextBox>
<regularexpressionvalidator <span class="atributoControl">controltovalidate=</span><span class="cadenaControl">"txt_Email"</span> <span class="atributoControl">errormessage=</span><span class="cadenaControl">"El correo electrónico no es correcto."</span> <span class="atributoControl">id=</span><span class="cadenaControl"> "rev_EmailCorrecto"</span> <span class="atributoControl">runat=</span><span class="cadenaControl">"server" </span>
<span class="atributoControl">validationexpression=</span><span class="cadenaControl">"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"</span>>
</regularexpressionvalidator>
</pre><br />
<h4>Validación de fechas</h4>En este caso, para validar fechas utilizaremos el control CompareValidator. Para ello, asociamos este validador con el control de tipo texto (txt_Fecha). Después, configuramos la propiedad <em>Operator </em>con el valor <em>DataTypeCheck</em>. Con esto, lo que conseguimos es configurar el validador para que funcione como un comparador de tipos. Por último, configuramos la propiedad <em>Type </em>con el valor <em>Date</em> para que el validador valide fechas.<br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;"><span style="color: blue;"><</span></span><span style="color: #a31515;"><span style="color: #a31515;">asp</span></span><span style="color: blue;"><span style="color: blue;">:</span></span><span style="color: #a31515;"><span style="color: #a31515;">TextBox</span></span> <span style="color: red;"><span style="color: red;">ID</span></span><span style="color: blue;"><span style="color: blue;">="txt_Fecha"</span></span> <span style="color: red;"><span style="color: red;">runat</span></span><span style="color: blue;"><span style="color: blue;">="server"</span></span> <span style="color: blue;"><span style="color: blue;">></span></span> <span style="color: blue;"><span style="color: blue;"></</span></span><span style="color: #a31515;"><span style="color: #a31515;">asp</span></span><span style="color: blue;"><span style="color: blue;">:</span></span><span style="color: #a31515;"><span style="color: #a31515;">TextBox</span></span><span style="color: blue;"><span style="color: blue;">></span></span></span><span style="font-size: x-small;"><br />
<br />
<span style="font-size: small;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;"><span style="color: blue;"><</span></span><span style="color: #a31515;"><span style="color: #a31515;">asp</span></span><span style="color: blue;"><span style="color: blue;">:</span></span><span style="color: #a31515;"><span style="color: #a31515;">CompareValidator</span></span> <span style="color: red;"><span style="color: red;">ID</span></span><span style="color: blue;"><span style="color: blue;">="cvt_Fecha"</span></span> <span style="color: red;"><span style="color: red;">runat</span></span><span style="color: blue;"><span style="color: blue;">="server"</span></span> <span style="color: red;"><span style="color: red;">ControlToValidate</span></span><span style="color: blue;"><span style="color: blue;">="txt_Fecha"</span></span> <span style="color: red;"><span style="color: red;">ErrorMessage</span></span><span style="color: blue;"><span style="color: blue;">="Formato fecha no válido. dd-mm-aaaa"</span></span> <span style="color: red;"><span style="color: red;">Operator</span></span><span style="color: blue;"><span style="color: blue;">="DataTypeCheck"</span></span> <span style="color: red;"><span style="color: red;">Type</span></span><span style="color: blue;"><span style="color: blue;">="Date"</span></span> <span style="color: blue;"><span style="color: blue;">></</span></span><span style="color: #a31515;"><span style="color: #a31515;">asp</span></span><span style="color: blue;"><span style="color: blue;">:</span></span><span style="color: #a31515;"><span style="color: #a31515;">CompareValidator</span></span><span style="color: blue;"><span style="color: blue;">></span></span></span></span><span style="font-size: x-small;"><br />
</span></span><span style="color: blue; font-size: x-small;"><span style="color: blue; font-size: x-small;"></span></span>JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.com0tag:blogger.com,1999:blog-5908139429569596228.post-76330379629773840422011-07-13T14:32:00.000-07:002011-08-27T04:01:29.634-07:00¿Qué son las Master Pages? ASP.NET (Fácil)Normalmente, todas páginas Web de un sitio tienen partes en común, como la cabecera, el menú o el pié. Eso significa que hay fragmentos de código que se repite en cada estas páginas. Esto implica que para realizar cualquier cambio hay que retocar todas las páginas del sitio. Así que toda modificación se convierte en tediosa y delicada, y una fuente inagotable de errores.<br />
<br />
En todas las tecnologías de desarrollo podemos encontrar mecanismos para evitar el problema de la repetición de código; algunas sencillas, como los includes de PHP y otras más sofisticadas, como Tiles o las Master page (<em>Página principal</em>, en Español) de ASP.NET. En esta entrada explicaremos qué son las Master Page y cómo utilizarlas.<br />
<br />
Una Master Page o Página principal es como una plantilla que contiene todos los elementos comunes en un grupo de páginas. Supongamos que tenemos que desarrollar una aplicación donde se muestran los productos y servicios de una empresa. La aplicación Web estará compuesta por una página para productos y otra para servicios. Las dos páginas tienen en común la cabecerá, el pié, el menú horizontal, y parte del menú Vertical. Pues bien, todos estos elementos se colocarán en la página principal, en la que se dejarán huecos para las partes específicas de las páginas de productos y servicios.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdd-i8Jm82YjZ3d3OAGMfjPL4_5Kzx5Th69zqKb41HL6TrZPU1JUrgqR6NB-V3FwBFfVrjykmwRj0ZUi_1fc1NExI4OXIAH-2dbNrwDCPovHIpbzt6vluYHn_EuEx19p2pypjkOqyGgAo/s1600/pagina.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdd-i8Jm82YjZ3d3OAGMfjPL4_5Kzx5Th69zqKb41HL6TrZPU1JUrgqR6NB-V3FwBFfVrjykmwRj0ZUi_1fc1NExI4OXIAH-2dbNrwDCPovHIpbzt6vluYHn_EuEx19p2pypjkOqyGgAo/s400/pagina.png" width="400" /></a></div><br />
Una vez que tenemos la Página principal, creamos las páginas de productos y servicios que sólo contrendrán el contenido espécifico. Cuando un cliente solicita, por ejemplo, la página de productos, .NET se encarga de fusionar la Página Principal con la de productos y se la entrega al cliente.<br />
<br />
Ya hemos visto el funcionamiento de paginas principales. A continuación veremos un ejemplo práctico de su uso.<br />
<br />
<h4>Paso 1: Crear un nuevo sitio Web.</h4><br />
Para ello abrimos Visual Studio 2008 y pulsamos sobre crear Sitio Web. Le damos un nombre y pulsamos aceptar<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnEU9HWzoWEcQcdEY2QaEAz-OXq35k-W-qqRr0x1TTZRg7A4OS6zRvgvn4bzAHWTepUGkTuwML6fSZtRjiDCHOQtRvkTzkWIPn2w1AhOqWHtG9AIYcvncl-dm7stUOJ0nhwlwGC5KVTaY/s1600/nuevoSitio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnEU9HWzoWEcQcdEY2QaEAz-OXq35k-W-qqRr0x1TTZRg7A4OS6zRvgvn4bzAHWTepUGkTuwML6fSZtRjiDCHOQtRvkTzkWIPn2w1AhOqWHtG9AIYcvncl-dm7stUOJ0nhwlwGC5KVTaY/s400/nuevoSitio.png" width="400" /></a></div><br />
<h4>Paso 2: Crear página principal</h4><br />
Hacemos click con el botón derecho sobre el explorador de soluciones y selecionamos la opción <b>Agregar nuevo elemento...</b>. Elegimos la opción de página principal, le damos un nombre, y pulsamos agregar.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKccZqdWJIaJY88jSIxgBqQRQQVmIttiEMDhZkCHkN8N-nMLqQ-K38QWRIegU9CNE8BSu3jB-A_-zRX6VKxgbiyp2xZtYEXrnFoIf3CqrcGCzFSoUAb4d2jFFj5zRe6m7w26qx1-PypCg/s1600/pantallaPrincipal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKccZqdWJIaJY88jSIxgBqQRQQVmIttiEMDhZkCHkN8N-nMLqQ-K38QWRIegU9CNE8BSu3jB-A_-zRX6VKxgbiyp2xZtYEXrnFoIf3CqrcGCzFSoUAb4d2jFFj5zRe6m7w26qx1-PypCg/s400/pantallaPrincipal.png" width="400" /></a></div><br />
Si le hechamos un vistazo al código de la página principal, comprobaremos que no es más que código HTML con dos controles ASP.NET(ContentPlaceHolder) que sirven para especificar los huecos. Por defecto, al crear una página principal se crean dos huecos, uno en la sección head y otro en el body.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OMVrdzmYI7T8G3I01x8T1jJRv_SsJu9ve-62Fgw9Ms-3BmMfVLfqdjz5wWwNcxRT3JRSZD3SuWcB6fAPnJJh1Ia94CxHzt-OhgBLi1gkWAmUpPZPfqI_ddsHttdVZHRezrbQ3Jum0/s1600/HuecosPredefinidos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OMVrdzmYI7T8G3I01x8T1jJRv_SsJu9ve-62Fgw9Ms-3BmMfVLfqdjz5wWwNcxRT3JRSZD3SuWcB6fAPnJJh1Ia94CxHzt-OhgBLi1gkWAmUpPZPfqI_ddsHttdVZHRezrbQ3Jum0/s400/HuecosPredefinidos.png" width="400" /></a></div><br />
<h4>Paso 3: Crear estructura del sitio</h4><br />
Ahora modificaremos la página principal para crear una estructura similar a la que vimos en la primera imagen. Además, de los dos huecos que aparecen en dicha imagen, mantendremos la que se crea por defecto en el HEAD, ya que siempre nos puede venir bien. <br />
<br />
<div class="codigo"><span style="color: black; font-family: "Courier New", Courier, monospace;"><html xmlns="</span><a href="http://www.w3.org/1999/xhtml"><span style="color: black; font-family: "Courier New", Courier, monospace;">http://www.w3.org/1999/xhtml</span></a><span style="color: black; font-family: "Courier New", Courier, monospace;">"><br />
<head runat="server"></span><br />
<span style="color: black; font-family: "Courier New", Courier, monospace;"><br />
<title>Página sin título</title><br />
<br />
<span style="color: #38761d;"><strong> <!--Elementos de cabecera comunes --></strong></span> <br />
<asp:ContentPlaceHolder id="head" runat="server"><br />
<strong><span style="color: #38761d;"><!--Elementos de cabecera específicos --></span></strong> </asp:ContentPlaceHolder><br />
</head><br />
<body><br />
<form id="form1" runat="server"><br />
<div id="contenedor"><br />
<br />
<div id="cabecera"><br />
<br />
<strong> </strong><span style="color: #38761d;"><strong><!-- Cabecera --></strong></span> <br />
</div><br />
<div id="menuHorizontal"><br />
<span style="color: #38761d;"><strong><!-- Menu Horizontal --></strong></span> <br />
</div><br />
<br />
<div id="cuerpo"><br />
<div id="menuVertical"><br />
<span style="color: black; font-family: "Courier New", Courier, monospace;"><br />
<strong><span style="color: #38761d;"><!-- Parte común del Menu Vertical --></span></strong><br />
<br />
<asp:ContentPlaceHolder ID="hueco1" runat="server"><br />
<span style="color: #38761d;"><strong><!-- Parte específica del Menu Vertical--></strong></span> </asp:ContentPlaceHolder><br />
<br />
</div><br />
<div id="contenido"><br />
<asp:ContentPlaceHolder id="hueco2" runat="server"><br />
<br />
<span style="color: #38761d;"><strong><!-- Contenido específico--></strong></span> <br />
</asp:ContentPlaceHolder><br />
</div><br />
<br />
</div><br />
<br />
<div id="pie"><br />
<strong><span style="color: #38761d;"><!-- pie --></span></strong> </span><br />
<span style="color: black; font-family: "Courier New", Courier, monospace;"> </div><br />
<br />
</div><br />
</form><br />
</body><br />
</html></span> </span></div><br />
<h4>Paso 4: Creamos las páginas de contenido</h4><br />
Volvemos a hacer click con el botón derecho sobre el explorador de soluciones y selecionamos la opción <b>Agregar nuevo elemento...</b>. Elegimos la opción de Web Forms, le ponemos productos.aspx de nombre, marcamos la opción <b>seleccionar la página principal</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBpTye9XL6cm41z4_UQ7lghDyBOZyc_0GddxmgRWwDu3Gg4g_PPW3FWM7TzC9XBFWOTj_HAS6t8XJxMnK8TP1VjfXdyJnqxk2q0gCj-OAFVBtFT73AE-SiOcWUSoCUf58BQqJ-IyhZJho/s1600/productos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBpTye9XL6cm41z4_UQ7lghDyBOZyc_0GddxmgRWwDu3Gg4g_PPW3FWM7TzC9XBFWOTj_HAS6t8XJxMnK8TP1VjfXdyJnqxk2q0gCj-OAFVBtFT73AE-SiOcWUSoCUf58BQqJ-IyhZJho/s400/productos.png" width="400" /></a></div><br />
En la siguiente pantalla seleccionamos la pagina principal que queremos asociar a la página productos.aspx y aceptamos.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD15OMToReLJnBsvn9K_siYzxfL6IOGyUhPOoXLYZ96g6h7mZSfq-v-7ZAxSbtqO3Lf68jQTy8rtAU-I1IwZHT991_K_JUDMk6i9Sa4D9tCv-6yQNO46xUbEKXNJbTYgcMvWeoRTgzRJg/s1600/eleccionMaster.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD15OMToReLJnBsvn9K_siYzxfL6IOGyUhPOoXLYZ96g6h7mZSfq-v-7ZAxSbtqO3Lf68jQTy8rtAU-I1IwZHT991_K_JUDMk6i9Sa4D9tCv-6yQNO46xUbEKXNJbTYgcMvWeoRTgzRJg/s400/eleccionMaster.png" width="400" /></a></div><br />
Si analizamos el código de la página productos.aspx vemos que sólo contiene 3 controles <em>ContentPlaceHolder</em>, uno por cada hueco que creamos en la Página principal.<br />
<%@ Page Language="VB" MasterPageFile="~/PaginaPrincipal.master" AutoEventWireup="false" CodeFile="productos.aspx.vb" Inherits="productos" title="Página sin título" %><br />
<br />
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"><br />
<span style="color: #38761d;"><strong> <!-- Elementos de cabecera específico de productos --></strong></span><br />
</asp:Content><br />
<br />
<asp:Content ID="Content2" ContentPlaceHolderID="hueco1" Runat="Server"><br />
<strong><span style="color: #38761d;"><!-- Elementos de menú vertical específicos de productos --></span></strong><br />
</asp:Content><br />
<br />
<asp:Content ID="Content3" ContentPlaceHolderID="hueco2" Runat="Server"><br />
<span style="color: #38761d;"><strong> <!-- Contenido especifico de productos --></strong></span><br />
</asp:Content><br />
<br />
<em>La creación de la página servicios.aspx es análoga a la creación de la página productos. </em><br />
<br />
Con esto ya tendríamos creada la estructura de nuestro sitio Web.... Ya podemos comenzar a programar¡¡JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.com0tag:blogger.com,1999:blog-5908139429569596228.post-27818198079726932272011-07-07T14:25:00.000-07:002011-10-14T13:23:53.015-07:00Envio de Email con ASP.NET (Fácil)<em>En esta entrada explicaré, a través de un ejemplo, lo sencillo que es el envío de emails con formato HTML a través de ASP.NET. El ejemplo utilizado es el típico formulario "Contactar" disponible en muchas web. Además, se ha añadido una segunda parte que trata los ficheros adjuntos.</em><br />
<br />
<h3>Herramientas y tecnologías utilizadas:</h3><ul><li><span style="font-family: Arial, Helvetica, sans-serif;">Visual Studio 2008</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">ASP.NET 3.5</span></li>
<li><span style="font-family: Arial;">VB.NET</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">HTML</span></li>
</ul><br />
<h3>Parte 1 - Envío del email</h3><h4>Paso 1: Creación del formulario. </h4><br />
Insertaremos dos TextBox, uno para el asunto y otro para el contenido, este último de tipo multilínea(textarea). Además utilizaremos dos controles de tipo label para mostrar el nombre de los campos. También es necesario un control de tipo Button para poder enviar el Email.<br />
<div class="codigo"><div class="formEmail"><br />
<br />
<br />
<asp:Literal ID="ltl_resultado" runat="server"></asp:Literal><br />
<br />
<asp:Label ID="lbl_asunto" runat="server" Text="Asunto:"></asp:Label><br />
<asp:TextBox ID="txt_asunto" runat="server"></asp:TextBox><br />
<br />
<asp:Label ID="lbl_mensaje" runat="server" Text="Mensaje:"></asp:Label><br />
<asp:TextBox ID="txt_mensaje" TextMode="MultiLine" runat="server"></asp:TextBox><br />
<br />
<asp:Button ID="btn_enviar" runat="server" Text="enviar" /><br />
<br />
</div></div><h4>Paso 2: Cuenta de correo</h4><br />
Para poder enviar emails a través de ASP.NET necesitamos una cuenta de correo electrónico. Normalmente, cuando contratamos un servicio de hosting se suelen inculir un determinado número de cuentas de correo. Por lo tanto, si no dispone de una cuenta de correo, el segundo paso es crearla.<br />
<br />
Además de la cuenta de correo necesitará saber cúal es el servidor de correo saliente. Este dato se puede consultar en el panel de control del hosting. En el ejemplo utilizaremos el siguiente servidor SMTP: <b>smtp.prueba.es</b>.<br />
<br />
La cuenta de correo que utilizaremos será <b>admin@prueba.es</b> cuyas credenciales son <b>usu</b> y <b>pass</b>.<br />
<br />
<h4>Paso 3: Programación del evento click del contrl btn_enviar. </h4><br />
A continuación se muestra el código que deberá insertar en el evento click del botón enviar.<br />
<br />
<div class="codigo">Protected Sub btn_enviar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_enviar.Click<br />
<br />
<span class="comentario">'booERROR nos servirá para saber si el envío se realizó si problemas </span><br />
<br />
Dim booERROR As Boolean = True<br />
<span class="comentario"> 'Creamos una instancia de la clase System.Net.Mail.MailMessage que será la encargada de gestionar el envío</span><br />
<br />
Dim correo As New System.Net.Mail.MailMessage<br />
<br />
Dim Msg As String<br />
Msg = "<body>" & _<br />
"<p>Mensaje enviado desde el formulario Contactar</p>" & _<br />
"<p>" & Me.txt_mensaje.Text & "</p>"<br />
correo.From = New System.Net.Mail.MailAddress(<a href="mailto:admin@prueba.es">admin@prueba.es</a>)<br />
<span class="comentario">'Especificamos el destinatario.</span><br />
<br />
correo.To.Add(<a href="mailto:direccion@destinatario.com">direccion@destinatario.com</a>)<br />
<br />
correo.Subject = txt_asunto.Text<br />
correo.IsBodyHtml = True<br />
correo.Priority = System.Net.Mail.MailPriority.Normal<br />
correo.Body = Msg<br />
<br />
<br />
<span class="comentario">'Configurar el host y las credenciales </span><br />
<br />
Dim smtp As New System.Net.Mail.SmtpClient<br />
<br />
smtp.Host = "smtp.prueba.es"<br />
smtp.Credentials = New System.Net.NetworkCredential("usu", "pass")<br />
<br />
<span class="comentario">'Si se produce un error booERROR pasará a valer False. </span><br />
<br />
Try<br />
smtp.Send(correo)<br />
Catch ex As Exception<br />
booERROR = False<br />
End Try<br />
<span class="comentario">'Informamos al usuario del resultado</span><br />
<br />
If booERROR Then<br />
ltl_resultado.Visible = True<br />
ltl_resultado.Text = "<p class=""EmailOk"">El mensaje ha sido enviado correctamente"<br />
Else<br />
ltl_resultado.Visible = True<br />
ltl_resultado.Text = "<p class=""EmailKo"">El mensaje no se ha enviado correctamente"<br />
End If<br />
End Sub<br />
<br />
<br />
</div><br />
<h3>Parte 2 - Envío de fichero adjunto</h3><br />
Si quisieramos enviar ficheros adjuntos al mensaje, deberemos modificar el código siguiendo los siguientes pasos:<br />
<br />
<h4>Paso 1 Modificar el código del formulario</h4><br />
Agregar el control fileupload para cargar el fichero y un botón para adjuntar al email. Además incluiremos un control de tipo lista para mostrar un listado con los ficheros adjuntados.<br />
<br />
<asp:FileUpload ID="fud_adjuntarArchivo" runat="server" /><br />
<asp:Button ID="btn_adjuntar" runat="server" Text="Adjuntar" /><br />
<br />
<asp:BulletedList ID="bll_ListadoFicherosAdjuntos" runat="server"><br />
<br />
</asp:BulletedList><br />
<br />
<h4>Paso 2 Almacenar el fichero</h4>Programar el evento click del botón btn_adjuntar.<br />
<br />
<span style="font-size: x-small;"></span><span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;">Protected</span></span> <span style="color: blue;"><span style="color: blue;">Sub</span></span> btn_adjuntar_Click(<span style="color: blue;"><span style="color: blue;">ByVal</span></span> sender <span style="color: blue;"><span style="color: blue;">As</span></span> <span style="color: blue;"><span style="color: blue;">Object</span></span>, <span style="color: blue;"><span style="color: blue;">ByVal</span></span> e <span style="color: blue;"><span style="color: blue;">As</span></span> System.EventArgs) <span style="color: blue;"><span style="color: blue;">Handles</span></span> btn_subir.Click</span><br />
<span style="font-family: inherit;"><br />
</span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> If</span></span> (fud_adjuntarArchivo.HasFile) <span style="color: blue;"><span style="color: blue;">Then</span></span></span><br />
<span style="font-family: inherit;"><br />
</span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> Dim</span></span> fileName <span style="color: blue;"><span style="color: blue;">As</span></span> <span style="color: blue;"><span style="color: blue;">String</span></span> = Server.HtmlEncode(fud_adjuntarArchivo.FileName)<span style="color: blue;"><span style="color: blue;"> </span></span></span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> Dim</span></span> Ruta <span style="color: blue;"><span style="color: blue;">As</span></span> <span style="color: blue;"><span style="color: blue;">String</span></span><span style="color: green;"><span style="color: green;"></span></span><span style="color: green;"> </span><br />
<span style="color: green;"> </span>Ruta = <span style="color: #a31515;">"~/ficherosAdjuntos/"</span> & fileName<span style="color: blue;"><span style="color: blue;"></span></span><br />
<br />
<span style="color: green;"><span style="color: green;"> 'Agregamos el fichero a la lista -------------------------------</span></span></span><br />
<span style="font-family: inherit;"><br />
</span><br />
<span style="font-family: inherit;"> ElementoLista.Text = fileName<br />
ElementoLista.Value = Ruta<br />
bll_listadoFicherosAdjuntos.Items.Add(ElementoLista)<span style="color: blue;"><span style="color: blue;"> </span></span></span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> Dim</span></span> ElementoLista <span style="color: blue;"><span style="color: blue;">As</span></span> <span style="color: blue;"><span style="color: blue;">New</span></span> ListItem()<span style="color: green;"><span style="color: green;"> </span></span></span><br />
<span style="color: green;"><span style="color: green; font-family: inherit;"> '----------------------------------------------------------------</span></span><br />
<span style="color: green; font-family: inherit;"></span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> Me</span></span>.fud_adjuntarArchivo.SaveAs(Server.MapPath(Ruta))</span><span style="color: blue;"><span style="color: blue;"><br />
</span></span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;"> End</span></span> <span style="color: blue;"><span style="color: blue;">If</span></span><br />
<span style="color: blue;"><span style="color: blue;"> </span></span></span><br />
<span style="font-family: inherit;"><span style="color: blue;"><span style="color: blue;">End</span></span> <span style="color: blue;"><span style="color: blue;">Sub</span></span></span><span style="color: blue;"><span style="color: blue;"></span></span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="color: blue;"><span style="color: blue; font-family: Arial, Helvetica, sans-serif;"> </span></span><br />
<h4>Paso 3: Modificar el evento enviar </h4><span style="font-size: x-small;"></span><span style="font-size: x-small;"><br />
<span style="font-family: inherit;"><span style="font-size: small;"><span style="color: blue;"><span style="color: blue;">For</span></span> <span style="color: blue;"><span style="color: blue;">Each</span></span> ItemAdjunto <span style="color: blue;"><span style="color: blue;">As</span></span> ListItem <span style="color: blue;"><span style="color: blue;">In</span></span> bll_listadoFicherosAdjuntos.Items<br />
correo.Attachments.Add(<span style="color: blue;"><span style="color: blue;">New</span></span> System.Net.Mail.Attachment(Server.MapPath(ItemAdjunto.Value)))<br />
<span style="color: blue;"><span style="color: blue;">Next</span></span><br />
<span style="color: blue;"></span><br />
<br />
Este código se colocará justo después de crear el objero <i>"correo"</i>. Es decir:<br />
<br />
<span style="color: blue;"><span style="color: blue;">Dim</span></span> correo <span style="color: blue;"><span style="color: blue;">As</span></span> <span style="color: blue;"><span style="color: blue;">New</span></span> System.Net.Mail.MailMessage<br />
<br />
<span style="color: blue;"><span style="color: blue;">For</span></span> <span style="color: blue;"><span style="color: blue;">Each</span></span> ItemAdjunto <span style="color: blue;"><span style="color: blue;">As</span></span> ListItem <span style="color: blue;"><span style="color: blue;">In</span></span> bll_listadoFicherosAdjuntos.Items<br />
correo.Attachments.Add(<span style="color: blue;"><span style="color: blue;">New</span></span> System.Net.Mail.Attachment(Server.MapPath(ItemAdjunto.Value)))<br />
<span style="color: blue;"><span style="color: blue;">Next</span></span></span></span></span><span style="color: blue; font-size: x-small;"><span style="color: blue; font-size: x-small;"></span></span><br />
<pre></pre>JPS-Programaciónhttp://www.blogger.com/profile/12422787887153079664noreply@blogger.com5