<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://team.desarrollosnea.com.ar/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jose A. Fernandez</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/default.aspx</link><description /><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>[EVENTO] Jornadas de Actualización en Tecnologías Innovadoras #UNNE #Corrientes 6/Sep 2013</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2013/08/30/evento-jornadas-de-actualizaci-243-n-en-tecnolog-237-as-innovadoras-unne-corrientes-6-sep-2013.aspx</link><pubDate>Fri, 30 Aug 2013 18:27:38 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:230</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=230</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=230</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2013/08/30/evento-jornadas-de-actualizaci-243-n-en-tecnolog-237-as-innovadoras-unne-corrientes-6-sep-2013.aspx#comments</comments><description>&lt;p&gt;Tengo el agrado de invitarlos a las &lt;strong&gt;Jornadas de Actualización en Tecnologías Innovadoras&lt;/strong&gt; el próximo &lt;strong&gt;Viernes 6 de Septiembre de 2013&lt;/strong&gt; a las &lt;strong&gt;17hs &lt;/strong&gt;(Lugar: UNNE-FACENA, &lt;a href="https://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=es&amp;amp;geocode=&amp;amp;q=9++de+Julio+1449,+Corrientes,+Argentina&amp;amp;aq=&amp;amp;sll=-27.467136,-58.783561&amp;amp;sspn=0.084228,0.169086&amp;amp;vpsrc=6&amp;amp;t=h&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=9+de+Julio+1449,+Corrientes,+Argentina&amp;amp;ll=-27.466746,-58.833665&amp;amp;spn=0.001316,0.002642&amp;amp;z=19&amp;amp;iwloc=A" target="_blank"&gt;9 de Julio 1449, Corrientes, Argentina&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;La hemos organizado &lt;a href="http://www.desarrollosnea.com" target="_blank"&gt;Desarrollos NEA&lt;/a&gt; con la &lt;a href="http://www.unne.edu.ar/" target="_blank"&gt;UNNE&lt;/a&gt; (Universidad Nacional del Nordeste) &lt;a href="http://exa.unne.edu.ar/" target="_blank"&gt;FACENA&lt;/a&gt; (Facultad de Ciencias Exactas y Naturales y Agrimensura) en una Jornada de Actualización Tecnológica; son una serie de charlas que si bien comienzan con estos temas, nos han comentando desde la UNNE que se vienen una serie con diferentes tecnologías; así que agendandose la fecha&amp;#160; para compartir unas horas intercambiando conocimiento.&lt;/p&gt;  &lt;p&gt;En esta oportunidad veremos estos temas:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://team.desarrollosnea.com.ar/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfernandez/JornadasActualizacion_2D00_UNNE_2D00_Septiembre2013_5F00_007F06DA.jpg"&gt;&lt;img title="JornadasActualizacion-UNNE-Septiembre2013" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="JornadasActualizacion-UNNE-Septiembre2013" src="http://team.desarrollosnea.com.ar/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfernandez/JornadasActualizacion_2D00_UNNE_2D00_Septiembre2013_5F00_thumb_5F00_1855C833.jpg" width="670" height="939" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Jornadas de Actualización en Tecnologías Innovadoras&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Desarrollo de una red social con Visual Studio 2013 Preview y ASP.NET MVC 5        &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;Aquí entre Marcos Budimir (&lt;a href="https://twitter.com/MarkoBudi" target="_blank"&gt;@MarkiBudi&lt;/a&gt;), &lt;/em&gt;Maximiliano Gonzalez Schweizer (&lt;a href="https://twitter.com/maxigs7" target="_blank"&gt;@maxigs7&lt;/a&gt;) y Diego Cantero &lt;a href="https://twitter.com/Mariano_D_C" target="_blank"&gt;(@Mariano_D_C&lt;/a&gt;) y quien yo &lt;a href="https://twitter.com/fernandezja" target="_blank"&gt;@fernandezja&lt;/a&gt;&lt;em&gt; generaremos un proyecto donde mostraremos estas tecnologías:&lt;/em&gt;       &lt;ul&gt;       &lt;li&gt;Entity Framework Code First &lt;/li&gt;        &lt;li&gt;ASP.NET MVC 5 &lt;/li&gt;        &lt;li&gt;Autenticación con Redes Sociales &lt;/li&gt;        &lt;li&gt;ASP.NET Web API &lt;/li&gt;        &lt;li&gt;Angular.js &lt;/li&gt;        &lt;li&gt;SignalR &lt;/li&gt;        &lt;li&gt;LESS, Web Essentials &lt;/li&gt;        &lt;li&gt;Bootstrap &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Inteligencia de Negocios con SQL 2012. &lt;/b&gt;      &lt;br /&gt;Aquí Humberto Oraisón nos dará la Introducción al nuevo “Modelo de Datos Tabulares de SSAS”       &lt;ul&gt;       &lt;li&gt;Conceptos. &lt;/li&gt;        &lt;li&gt;Ventajas y desventajas respecto del modelo tradicional de datos multidimensionales. &lt;/li&gt;        &lt;li&gt;Introducción al lenguaje de consulta: DAX (Data Analysis Expressions). &lt;/li&gt;        &lt;li&gt;Implementando una solución BI con datos tabulares. &lt;/li&gt;        &lt;li&gt;Consumiendo datos tabulares con Excel 2013, SharePoint 2013 y Power View. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Infraestructura con Windows Server 2012        &lt;br /&gt;&lt;/strong&gt;Aquí Francisco Casco (&lt;a href="https://twitter.com/FranciscoACasco" target="_blank"&gt;@FranciscoACasco&lt;/a&gt;) tiene estos temas:       &lt;ul&gt;       &lt;li&gt;Active Directory &lt;/li&gt;        &lt;li&gt;DHCP y RRAS &lt;/li&gt;        &lt;li&gt;File Server (NTFS y Share) &lt;/li&gt;        &lt;li&gt;GPO (Políticas de Grupo) &lt;/li&gt;        &lt;li&gt;Remote Desktop Services &lt;/li&gt;        &lt;li&gt;Virtualización (Hyper-V) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Esperamos contar con su presencia, están todos invitados… &lt;/p&gt;  &lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:45aec457-e36c-4081-812f-b960c4367183" class="wlWriterSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt;Tags: &lt;a href="http://www.delicious.com/tag/eventos" rel="tag"&gt;eventos&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/unne" rel="tag"&gt;UNNE&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/corrientes" rel="tag"&gt;Corrientes&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/DesarrollosNEA" rel="tag"&gt;DesarrollosNEA&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/vs2013" rel="tag"&gt;VS2013&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/aspnetmvc" rel="tag"&gt;aspnetmvc&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/sqlserver2012" rel="tag"&gt;SqlServer2012&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/bi" rel="tag"&gt;BI&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/businessbntelligence" rel="tag"&gt;BusinessIntelligence&lt;/a&gt;, &lt;a href="http://www.delicious.com/tag/windowsserver2012" rel="tag"&gt;WindowsServer2012&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=230" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Desarrollos+NEA/default.aspx">Desarrollos NEA</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Windows+Server+2012/default.aspx">Windows Server 2012</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/VS2013/default.aspx">VS2013</category></item><item><title>[ASP.NET+jQuery] Gridview con checkbox limitando a un solo valor de selección</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2012/01/10/asp-net-jquery-gridview-con-checkbox-limitando-a-un-solo-valor-de-selecci-243-n.aspx</link><pubDate>Tue, 10 Jan 2012 03:57:40 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:219</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=219</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=219</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2012/01/10/asp-net-jquery-gridview-con-checkbox-limitando-a-un-solo-valor-de-selecci-243-n.aspx#comments</comments><description>&lt;p&gt;Si necesitamos tener un control checkbox en cada fila y que solo podamos seleccionar un sola fila a la vez (idem a un option)   &lt;br /&gt;Esto puede servir tanto para ASP.NET Webform como para MVC, con la salvedad de que depende de como renderizan las grillas de datos.    &lt;br /&gt;Gracias a una pregunta de los foros de MSDN de ASP.NET “&lt;a href="http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/14c21cfc-f176-45f2-a176-065ae0979b80" target="_blank"&gt;Limitar selección Checkbox en GridView&lt;/a&gt;” tenia algo similiar en el borrador así que aquí va.&lt;/p&gt;  &lt;p&gt;Si tenemos un Gridview con una columna template algo así:&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:GridView&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;GridView1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; 
        &lt;span style="color:#ff0000;"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;False&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Columns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:TemplateField&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HeaderText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Seleccion&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
                     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:CheckBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;chkSeleccion&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;CssClass&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;controlSeleccion&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
                 &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:TemplateField&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;  
            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:BoundField&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;DataField&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Nombre&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HeaderText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Nombre&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:BoundField&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;DataField&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FechaNacimiento&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HeaderText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Fecha Nacimiento&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Columns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:GridView&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Cuando renderiza en ASP.NET 4.0 lo hace de esta manera&lt;/p&gt;

&lt;p&gt;
  &lt;table border="0" cellspacing="0" cellpadding="5" width="701"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="250"&gt;La tabla HTML&lt;/td&gt;

        &lt;td valign="top" width="449"&gt;La celda con el control&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="250"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_4C8B9CA0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_713CB417.png" width="304" height="141" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td valign="top" width="449"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_00901627.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_162A4EC4.png" width="537" height="354" /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Solución con jQuery: Evento .click()&lt;/h3&gt;

&lt;p&gt;Podriamos tener un selector en jQuery que tome todos los checkbox que están dentro de nuestra clase “controlSeleccion” y cada vez que se realiza un evento click (con mouse o sin el directamente con el teclado igualmente dispara el evento)&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt;         $(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;.controlSeleccion input:checkbox&amp;#39;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;                 $(&lt;span style="color:#006080;"&gt;&amp;#39;.controlSeleccion input:checkbox&amp;#39;&lt;/span&gt;).removeAttr(&lt;span style="color:#006080;"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;                 $(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;).attr(&lt;span style="color:#006080;"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;             });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;         });    &lt;/pre&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;



&lt;p&gt;&lt;em&gt;NOTA: El selector &lt;strong&gt;:checkbox&lt;/strong&gt; es identico a &lt;strong&gt;[type=checkbox]&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Solución con jQuery: Atachando el evento con .on() (nuevo en jQuery 1.7)&lt;/h3&gt;

&lt;p&gt;En la version 1.7 de jQuery tenemos la sintaxis &lt;a href="http://api.jquery.com/on/" target="_blank"&gt;“.on()”&lt;/a&gt; para bindear a eventos (como lo eran live o bind, etc).&lt;/p&gt;

&lt;p&gt;Nos quedaria algo asi para hacer lo anterior:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt;     $(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;         $(&lt;span style="color:#006080;"&gt;&amp;#39;.controlSeleccion input:checkbox&amp;#39;&lt;/span&gt;).on(&lt;span style="color:#006080;"&gt;&amp;#39;click&amp;#39;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;             $(&lt;span style="color:#006080;"&gt;&amp;#39;.controlSeleccion input:checkbox&amp;#39;&lt;/span&gt;).removeAttr(&lt;span style="color:#006080;"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;             $(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;).attr(&lt;span style="color:#006080;"&gt;&amp;#39;checked&amp;#39;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;         });&lt;/pre&gt;&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     });    &lt;/pre&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;Para otros post:&lt;/h4&gt;

&lt;p&gt;Mas adelante escribiré como hacer que este checkbox se comporte como el “comando de selección del gridview”, para que nos quede todo “un poco mas elegante”, ya que en este caso particular el desarrollador deberá “iterar” para buscar que control esta seleccionado. Una mejora seria que este control este enlazado a algun campo booleano del la colección de objetos&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Espero que les sirva de ayuda o guía.&lt;/p&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=219" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+4.0/default.aspx">ASP.NET 4.0</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item><item><title>[Control+F 2011] Curso Terminado: .NET Senior 80hs. WPF/WCF/Silverlight (Polo IT Corrientes)</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/12/19/control-f-2011-curso-terminado-net-senior-80hs-wpf-wcf-silverlight-polo-it-corrientes.aspx</link><pubDate>Mon, 19 Dec 2011 19:05:36 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:218</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=218</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=218</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/12/19/control-f-2011-curso-terminado-net-senior-80hs-wpf-wcf-silverlight-polo-it-corrientes.aspx#comments</comments><description>&lt;p&gt;Se acerca fin de año y por estos lugares, terminó un curso intensivo (y casi sin respiro) de estas tres tecnologías (WPF/WCF/Silverlight) en el marco de las &lt;a href="http://www.becascontrolf.com.ar/" target="_blank"&gt;Becas Control+F&lt;/a&gt; (&lt;a href="http://twitter.com/becascontrolf" target="_blank"&gt;@becascontrolf&lt;/a&gt;)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#666666"&gt;“Con el objetivo de fomentar más y mejor empleo en las áreas de software y tecnología a nivel nacional, el Ministerio de Trabajo, Empleo y Seguridad Social de la Nación, en conjunto con CESSI, y con el apoyo de empresas referentes del sector, ofrecen cursos de capacitación gratuita en todo el país.”&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Esta vez se armaron en Corrientes, y los gestionó el &lt;a href="http://poloitcorrientes.com" target="_blank"&gt;Polo IT Corrientes&lt;/a&gt; a los cursos de Programación &lt;a href="http://www.becascontrolf.com.ar/cursos/35/programador-net-junior" target="_blank"&gt;.NET Junior&lt;/a&gt;, &lt;a href="http://www.becascontrolf.com.ar/cursos/37/programador-net-nivel-senior" target="_blank"&gt;.NET Senior&lt;/a&gt;, &lt;a href="http://www.becascontrolf.com.ar/cursos/1/administrador-sql" target="_blank"&gt;Administración en SQL Server&lt;/a&gt; y &lt;a href="http://www.becascontrolf.com.ar/cursos/18/genexus" target="_blank"&gt;Genexus&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Aquí los que rindieron el primer día, y los del segundo (a la derecha):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/ControlF_2D00_NETSENIOR_2D00_2011_5F00_5EA26155.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="ControlF-NETSENIOR-2011" border="0" alt="ControlF-NETSENIOR-2011" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/ControlF_2D00_NETSENIOR_2D00_2011_5F00_thumb_5F00_4F3ED979.jpg" width="1044" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Algunos ya trabajaban con este tecnología o en .NET, pero la mayoría alumnos de entidades educativas de la región (&lt;a href="http://www.frre.utn.edu.ar/" target="_blank"&gt;UTN FRRe&lt;/a&gt;, UNNE, Institutos de IT)&amp;#160; y por eso razón casi la mitad del curso quedo en el grupo de los rezagados que quedaron por el camino (por falta de tiempo)&lt;/p&gt;  &lt;h3&gt;Mas fotos&lt;/h3&gt;  &lt;p&gt;   &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Similares que tuve la oportunidad de estar al frente&lt;/u&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;[Control+F 2010] .NET Senior (UTN FRRe) 2010 &lt;em&gt;(sin fotos, ni post)&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geeks.ms/blogs/fernandezja/archive/2010/12/27/control-f-2010-curso-terminado-net-junior-160hs-utn-frre.aspx" target="_blank"&gt;[Control+F 2010] Curso Terminado: .NET Junior 160hs (UTN – FRRe)&lt;/a&gt; 2010 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geeks.ms/blogs/fernandezja/archive/2009/12/21/curso-terminado-becas-control-f-curso-net-240hs-utn-frre.aspx" target="_blank"&gt;Curso Terminado: Becas Control+F Curso .NET 240hs (UTN – FRRe)&lt;/a&gt; 2009       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Mas info&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Becas Control+F      &lt;br /&gt;&lt;a href="http://www.becascontrolf.com.ar/"&gt;http://www.becascontrolf.com.ar/&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Mas datos del curso .NET Senior dentro de Becas Control+F      &lt;br /&gt;&lt;a href="http://www.becascontrolf.com.ar/cursos/37/programador-net-nivel-senior"&gt;http://www.becascontrolf.com.ar/cursos/37/programador-net-nivel-senior&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=218" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Formacion/default.aspx">Formacion</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Cursos/default.aspx">Cursos</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Control_2B00_F/default.aspx">Control+F</category></item><item><title>[EF] Utilizar el ConnectionString de mi modelo Entity Framework</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/11/08/ef-utilizar-el-connectionstring-de-mi-modelo-entity-framework.aspx</link><pubDate>Tue, 08 Nov 2011 11:56:42 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:214</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=214</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=214</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/11/08/ef-utilizar-el-connectionstring-de-mi-modelo-entity-framework.aspx#comments</comments><description>&lt;p&gt;Trabajando con &lt;a href="http://team.desarrollosnea.com.ar/blogs/ffrank" target="_blank"&gt;Federico&lt;/a&gt; necesitamos realizar consultas a la DB “dinámicamente” para rellenar reportes con Report Server embebido en nuestras aplicaciones web.     &lt;br /&gt;Para eso utilizamos Procedimientos Almacenados, y como queremos que sea lo mas “genérico posible”, obtenemos el nombre del reporte (ya sea por un campo de la DB o armándolo con alguna política de nombres teniendo en cuenta el del reporte). &lt;/p&gt;  &lt;p&gt;Como sabemos la &lt;a href="http://msdn.microsoft.com/es-es/library/cc716756.aspx" target="_blank"&gt;Cadena de Conexión de Entity Framework&lt;/a&gt; esta compuesta por la cadena, path de archivos del modelo y de asignación. Por ejemplo… &lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;AdventureWorksEntities&amp;quot;&lt;/span&gt; 
         &lt;span style="color:#ff0000;"&gt;connectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
         provider=System.Data.SqlClient;provider connection string=&amp;#39;Data Source=localhost;
         Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
         multipleactiveresultsets=true&amp;#39;&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;providerName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;System.Data.EntityClient&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Para armar nuestro &lt;a href="http://msdn.microsoft.com/es-es/library/ms254953.aspx" target="_blank"&gt;Comando&lt;/a&gt; ADO.NET “puro y simple” (y genérico para llenar nuestros reportes) necesitamos la Conexión y para ello una cadena… y no queríamos:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Tener una cadena por separado (la tentación y fuerte!) &lt;/li&gt;

  &lt;li&gt;Parsear la cadena de conexión de EF (para obtener la parte que necesitamos) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Entonces solo basta una lectura rápida de las propiedades de la conexión en este caso nos valemos de la propiedad &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.entityclient.entityconnection.storeconnection.aspx" target="_blank"&gt;StoreConnection&lt;/a&gt; del EntityConnection &lt;/p&gt;

&lt;p&gt;Textual de MSDN: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;(…)Proporciona acceso a la conexión de origen de datos subyacente usada por el objeto EntityConnection.(…)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Podríamos entonces tener una propiedad estática que nos ayude:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ConnectionString
{
    &lt;font color="#0000ff"&gt;get&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/font&gt;
    {
        &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; ( &lt;font color="#408080"&gt;AdventureWorksEntities&lt;/font&gt; contexto = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;font color="#408080"&gt;AdventureWorksEntities&lt;/font&gt;())
        {
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; cadenaCon = 
                    ((System.Data.EntityClient.&lt;font color="#408080"&gt;EntityConnection&lt;/font&gt;)contexto.Connection).StoreConnection.ConnectionString;
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; cadenaCon;
            }
    

    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Enlaces&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Cadena de Conexion (Entity Framework) 
      &lt;br /&gt;&lt;/strong&gt;&lt;a title="http://msdn.microsoft.com/es-es/library/cc716756.aspx" href="http://msdn.microsoft.com/es-es/library/cc716756.aspx"&gt;http://msdn.microsoft.com/es-es/library/cc716756.aspx&lt;/a&gt; 

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;EntityConnection&lt;/strong&gt; (Clase) 

    &lt;br /&gt;Contiene una referencia a un modelo conceptual y una conexión a un origen de datos. Esta clase no puede heredarse. 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.entityclient.entityconnection(v=VS.100).aspx"&gt;http://msdn.microsoft.com/es-es/library/system.data.entityclient.entityconnection(v=VS.100).aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;EntityConnection.&lt;strong&gt;StoreConnection&lt;/strong&gt; (Propiedad) 

    &lt;br /&gt;

    &lt;br /&gt;Proporciona acceso a la conexión de origen de datos subyacente usada por el objeto EntityConnection. 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.entityclient.entityconnection.storeconnection.aspx"&gt;http://msdn.microsoft.com/es-es/library/system.data.entityclient.entityconnection.storeconnection.aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=214" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ADO.NET/default.aspx">ADO.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/EF/default.aspx">EF</category></item><item><title>[ASP.NET MVC] Razor: Utilizar el caracter @ en funciones javascript y/o html. Caracter escape @@</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/10/21/asp-net-mvc-razor-utilizar-el-caracter-en-funciones-javascript-y-o-html-caracter-escape.aspx</link><pubDate>Fri, 21 Oct 2011 19:13:59 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:213</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=213</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=213</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/10/21/asp-net-mvc-razor-utilizar-el-caracter-en-funciones-javascript-y-o-html-caracter-escape.aspx#comments</comments><description>&lt;p&gt;Si alguien quiere utilizar en una vista con Razor el caracter “@” en alguna función javascript y/o html por ejemplo, algo simple…&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; indiceArroba = email.indexOf(&lt;span style="color:#006080;"&gt;&amp;quot;@&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;El mensaje que nos proporciona: 
  &lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;&amp;quot;&amp;quot;&amp;quot; is not valid at the start of a code block.&amp;#160; Only identifiers, keywords, comments, &amp;quot;(&amp;quot; and &amp;quot;{&amp;quot; are valid.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_78A9FD48.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_2FA3DB82.png" width="660" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O simplemente si quieres escribir en HTML un simple @&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_4C5D5097.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_1E2354DD.png" width="1028" height="48" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Con el mensaje: 
  &lt;br /&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;A space or line break was encountered after the &amp;quot;@&amp;quot; character.&amp;#160; Only valid identifiers, keywords, comments, &amp;quot;(&amp;quot; and &amp;quot;{&amp;quot; are valid at the start of a code block and they must occur immediately following &amp;quot;@&amp;quot; with no space in between.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Solución: El caracter escape para el @ es el doble @@&lt;/h3&gt;

&lt;p&gt;Para poder seguir adelante el carácter escape para el @ es simplemente el doble arroba @@ &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Sonrisa" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/wlEmoticon_2D00_smile_5F00_4C4D2ACA.png" /&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; indiceArroba = email.indexOf(&lt;span style="color:#006080;"&gt;&amp;quot;@@&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;span&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;O si quieres simplemente escribir un @@ simple.&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;span&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;NOTA:&amp;#160; No esta demás comentar también que podemos combinar HTML/Client Scripting con código Razor utilizando @: y &amp;lt;text&amp;gt;, &lt;a href="http://www.asp.net/webmatrix/tutorials/2-introduction-to-asp-net-web-programming-using-the-razor-syntax#BM_CombiningTextMarkupAndCode" target="_blank"&gt;mas info aquí&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Enlaces&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;C# Razor Syntax Quick Reference 
    &lt;br /&gt;&lt;a href="http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx"&gt;http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx&lt;/a&gt; 

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;Introduction to ASP.NET Web Programming Using the Razor Syntax 
    &lt;br /&gt;&lt;a href="http://www.asp.net/webmatrix/tutorials/2-introduction-to-asp-net-web-programming-using-the-razor-syntax"&gt;http://www.asp.net/webmatrix/tutorials/2-introduction-to-asp-net-web-programming-using-the-razor-syntax&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=213" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Razor/default.aspx">Razor</category></item><item><title>[SQL2008+NET] Leer un campo Time (SQL 2008) en un SqlDataReader para obtener un TimeSpan (.NET)</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/05/11/sql2008-net-leer-un-campo-time-sql-2008-en-un-sqldatareader-para-obtener-un-timespan-net.aspx</link><pubDate>Thu, 12 May 2011 00:30:04 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:212</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=212</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=212</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/05/11/sql2008-net-leer-un-campo-time-sql-2008-en-un-sqldatareader-para-obtener-un-timespan-net.aspx#comments</comments><description>&lt;p&gt;Si estas accediendo a un SQL SERVER 2008 y utilizando uno de sus nuevos tipos de datos como el &lt;a href="http://msdn.microsoft.com/es-es/library/bb677243.aspx" target="_blank"&gt;Time&lt;/a&gt; veras que no es fácil leerlo con un &lt;a href="http://msdn.microsoft.com/es-es/library/w9y9ttex.aspx" target="_blank"&gt;SqlDataReader&lt;/a&gt;. La idea es obtener el valor del &lt;a href="http://msdn.microsoft.com/es-es/library/bb677243.aspx" target="_blank"&gt;Time&lt;/a&gt; (SQL) que en .NET es un tipo de dato &lt;a href="http://msdn.microsoft.com/es-es/library/system.timespan.aspx" target="_blank"&gt;TimeSpan&lt;/a&gt;.     &lt;br /&gt;    &lt;br /&gt;Si estas pensando hacer esto! olvídalo…&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;TimeSpan tiempo = (TimeSpan)reader[&lt;span style="color:#006080;"&gt;&amp;quot;tiempo&amp;quot;&lt;/span&gt;];&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Ir a las fuentes (ayuda a MSDN)&lt;/h3&gt;

&lt;p&gt;Investigando un poco di con método &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.gettimespan.aspx"&gt;GetTimeSpan&lt;/a&gt; del &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.aspx"&gt;SqlDataReader &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Para los curiosos&lt;/u&gt;: 

  &lt;br /&gt;Si utilizas el tipo de dato &lt;a href="http://msdn.microsoft.com/es-es/library/bb677243.aspx" target="_blank"&gt;Time&lt;/a&gt;(de SQL 2008) se mapea a un tipo de datos &lt;a href="http://msdn.microsoft.com/es-es/library/system.timespan.aspx" target="_blank"&gt;TimeSpan&lt;/a&gt; de .NET.

  &lt;br /&gt;Si vemos el articulo &lt;a href="http://msdn.microsoft.com/es-es/library/cc716729.aspx"&gt;Asignar tipos de datos de SQL Server (ADO.NET)&lt;/a&gt; vemos que para obtener este valor tenemos un método &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.getdatetime.aspx"&gt;GetDateTime &lt;/a&gt;del &lt;a href="http://msdn.microsoft.com/es-es/library/w9y9ttex.aspx" target="_blank"&gt;SqlDataReader&lt;/a&gt;

  &lt;br /&gt;Pero luego descubrí el &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.gettimespan.aspx"&gt;GetTimeSpan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Obteniendo el valor de campo Time… &lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Para obtener el valor del &lt;a href="http://msdn.microsoft.com/es-es/library/bb677243.aspx" target="_blank"&gt;Time&lt;/a&gt; (SQL) que en .NET es un tipo de dato &lt;a href="http://msdn.microsoft.com/es-es/library/system.timespan.aspx" target="_blank"&gt;TimeSpan&lt;/a&gt; utilizamos el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.gettimespan.aspx"&gt;GetTimeSpan&lt;/a&gt; del &lt;a href="http://msdn.microsoft.com/es-es/library/w9y9ttex.aspx" target="_blank"&gt;SqlDataReader&lt;/a&gt;, que recibe la posición de la columna, si es la columna 3, el índice es 2... ejemplo: 

    &lt;div&gt;
      &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;TimeSpan horaTimeSpan = reader.GetTimeSpan(2);&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;Podemos mejorar agregando el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.GetOrdinal.aspx"&gt;GetOrdinal &lt;/a&gt;para obtener el índice de la columna si tenemos el nombre 

    &lt;div&gt;
      &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;TimeSpan horaTimeSpan = reader.GetTimeSpan(reader.GetOrdinal(&lt;span style="color:#006080;"&gt;&amp;quot;hora&amp;quot;&lt;/span&gt;));
hora.Text = horaTimeSpan.ToString(&lt;span style="color:#006080;"&gt;&amp;quot;HH:mm&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTA 1:&lt;/strong&gt; Como dice la ayuda en MSDN se debería antes verificar si IsDBNull la columna del reader o sino la conversión genera una excepción&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTA 2:&lt;/strong&gt; Dar formato al TimeSpan “para que quede legible por nosotros, los humanos” ;) &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ee372286.aspx" target="_blank"&gt;Cadenas de formato TimeSpan estándar&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ee372287.aspx" target="_blank"&gt;Cadenas de formato TimeSpan personalizado&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.getdatetime.aspx"&gt; 
      &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Espero que te sirva de ayuda o guía.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Enlaces&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Time (Transact-SQL)
      &lt;br /&gt;&lt;/strong&gt;Define una hora de un día. La hora no distingue la zona horaria y está basada en un reloj de 24 horas. 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/bb677243.aspx"&gt;http://msdn.microsoft.com/es-es/library/bb677243.aspx&lt;/a&gt;

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Tipos de datos y funciones de fecha y hora (Transact-SQL)&lt;/strong&gt;

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms186724.aspx"&gt;http://msdn.microsoft.com/es-es/library/ms186724.aspx&lt;/a&gt;

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;SqlDataReader.GetTimeSpan (Método)&lt;/strong&gt; 

    &lt;br /&gt;Recupera el valor de la columna especificada como objeto TimeSpan. 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.gettimespan.aspx"&gt;http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.gettimespan.aspx 
      &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Asignar tipos de datos de SQL Server (ADO.NET)&lt;/strong&gt; 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/cc716729.aspx"&gt;http://msdn.microsoft.com/es-es/library/cc716729.aspx 
      &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;SqlDataReader.GetDateTime (Método) 
      &lt;br /&gt;&lt;/strong&gt;Obtiene el valor de la columna especificada como un objeto DateTime. 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.getdatetime.aspx"&gt;http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.getdatetime.aspx 
      &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Cadenas de formato TimeSpan estándar&lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ee372286.aspx"&gt; 
      &lt;br /&gt;http://msdn.microsoft.com/es-es/library/ee372286.aspx 

      &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Cadenas de formato TimeSpan personalizado&lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqldatareader.getdatetime.aspx"&gt; 
      &lt;br /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ee372287.aspx"&gt;http://msdn.microsoft.com/es-es/library/ee372287.aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=212" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Tips_2F00_Tricks/default.aspx">Tips/Tricks</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/.NET+General/default.aspx">.NET General</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/SQL+2008/default.aspx">SQL 2008</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ADO.NET/default.aspx">ADO.NET</category></item><item><title>Microsoft Community Contributor Award 2011</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/05/06/microsoft-community-contributor-award-2011.aspx</link><pubDate>Sat, 07 May 2011 01:33:04 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:211</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=211</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=211</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/05/06/microsoft-community-contributor-award-2011.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_13C04384.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_7D7A0264.png" width="800" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Es grato recibir buenas noticias por correo! Y mas si es un premio. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;Dear Jose,       &lt;br /&gt;Congratulations! We’re pleased to inform you that your contributions to Microsoft online technical communities have been recognized with the Microsoft Community Contributor Award.        &lt;br /&gt;The Microsoft Community Contributor Award is reserved for participants who have made notable contributions in Microsoft online community forums such as TechNet, MSDN and Answers. The value of these resources is greatly enhanced by participants like you, who voluntarily contribute your time and energy to improve the online community experience for others.        &lt;br /&gt;Becoming a Microsoft Community Contributor Award recipient includes access to important benefits, such as complimentary resources to support you in your commitment to Microsoft online communities…        &lt;br /&gt;Thank you for your commitment to Microsoft online technical communities and congratulations again! &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Uno día a día esta con el “cotidiano fuego de los proyectos” y se hace tiempo para ayudar y seguir aprendiendo en los foros… donde cada uno aporta un granito de arena, para que entre todos podamos crecer y evangelizar en la tecnología que nos apasiona (&lt;strike&gt;y nos da dolores de cabeza&lt;/strike&gt;).&lt;/p&gt;  &lt;p&gt;Asi que los invito a los &lt;a href="http://social.msdn.microsoft.com/Forums/es/categories/" target="_blank"&gt;foros de MSDN&lt;/a&gt;, &lt;a href="http://social.technet.microsoft.com/forums/es-ES/categories/" target="_blank"&gt;TechNet&lt;/a&gt; y &lt;a href="http://answers.microsoft.com/es-es" target="_blank"&gt;Answers&lt;/a&gt;, para compartir, preguntar, ayudar o simplemente “mirar pasivamente”.&lt;/p&gt;  &lt;p&gt;Gracias a Microsoft por el reconocimiento… y también por el premio; ya que además de la “distinción” tenemos acceso a una librería online con muchos libros de &lt;a href="http://www.microsoft.com/mspress/" target="_blank"&gt;Microsoft Press&lt;/a&gt; (E-Reference Library de &lt;a href="http://safaribooksonline.com" target="_blank"&gt;Safari Book Online&lt;/a&gt;) así que no hay impedimento para seguir formándose… &lt;/p&gt;  &lt;p&gt;Es grato ver en &lt;a href="http://geeks.ms" target="_blank"&gt;Geeks.ms&lt;/a&gt; que &lt;a href="http://geeks.ms/blogs/jtorrecilla/archive/2011/04/28/personal-microsoft-community-contributor-2011.aspx" target="_blank"&gt;Javier Torrecilla&lt;/a&gt; y &lt;a href="http://geeks.ms/blogs/jyeray/archive/2011/04/28/microsoft-community-contributor-award-2011.aspx"&gt;Josué Yeray Julián Ferreiro&lt;/a&gt; también tienen este honor… y es mas honor para mi compartir con ellos.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/MCC11_5F00_Logo_5F00_Horizontal_5F00_Full_2D00_color_5F00_1FA1E81E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="MCC11_Logo_Horizontal_Full-color" border="0" alt="MCC11_Logo_Horizontal_Full-color" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/MCC11_5F00_Logo_5F00_Horizontal_5F00_Full_2D00_color_5F00_thumb_5F00_64DA3F47.png" width="240" height="131" /&gt;&lt;/a&gt;&lt;/p&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=211" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Personal/default.aspx">Personal</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Classic+ASP/default.aspx">Classic ASP</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/MCC/default.aspx">MCC</category></item><item><title>[ASP.NET] Submit a un iFrame dentro de la misma pagina. Con PostbackUrl y modificando el target del formulario (JS puro y jQuery)</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/03/26/asp-net-submit-a-un-iframe-dentro-de-la-misma-pagina-con-postbackurl-y-modificando-el-target-del-formulario-js-puro-y-jquery.aspx</link><pubDate>Sat, 26 Mar 2011 17:12:01 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:210</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=210</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=210</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/03/26/asp-net-submit-a-un-iframe-dentro-de-la-misma-pagina-con-postbackurl-y-modificando-el-target-del-formulario-js-puro-y-jquery.aspx#comments</comments><description>&lt;p&gt;Por una pregunta sobre este tema “&lt;a href="http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/5b75f7c2-ce6d-4f04-a6fe-fda0e6fcbeb9" target="_blank"&gt;Enviar datos a una forma dentro de un iframe&lt;/a&gt;”, desempolve algo que tenia en borrador hace años… &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ANTES NADA… Por qué lo tenia en borrador? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Pense que nadie lo necesitaba… Porque trabajar con iFrames en ASP.NET Webforms en “un dolor constante”, hay que hacer cosas con javascript para la comunicación… una tema fácil es &lt;a href="http://geeks.ms/blogs/fernandezja/archive/2007/11/10/manipular-iframe-desde-codebehind-inscrustar-paginas-web.aspx" target="_blank"&gt;incrustar desde ASP.NET contenido en iframes&lt;/a&gt;, y otra es enviar-recibir información. Todo esto porque la magia es ASP.NET es tener un solo formulario que casi casi no debes “tocarlo”&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(NOTA: en ASP.NET MVC es una maravilla trabajar con javascript, tienes un mejor control del HTML resultante)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;En ASP.NET Webforms tenemos varias opciones a los iFrames para “cargar contenido” &lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Utilizar &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.updatepanel.aspx" target="_blank"&gt;Update Panels&lt;/a&gt; con ASP.NET Ajax &lt;/li&gt;    &lt;li&gt;Utilizar Ajax para cargar el contenido externo (&lt;a href="http://api.jquery.com/category/ajax/" target="_blank"&gt;aquí con ayuda de jQuery tenemos una amplia API para estas cosas&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pero volvamos al tema de enviar datos a una iFrame dentro de la misma pagina…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;El problema&lt;/h3&gt;  &lt;p&gt;Al problema que en los foros de MSDN preguntaron tenia era como eje esta misma temática así que aquí va para tenerla de referencia.    &lt;br /&gt;“Enviar datos a una forma dentro de un iframe”, que como sabemos en ASP.NET tenemos un solo formulario en las paginas, en cada postback se realiza un post a la misma pagina salvo que cambiemos en un boton por ejemplo la propiedad PostbackUrl para modificar la pagina donde enviara los datos… pero no podemos definir el &lt;a href="http://www.w3.org/TR/html401/present/frames.html#target-info" target="_blank"&gt;target&lt;/a&gt; (nombre del frame) de donde queremos que cargue la pagina destino.     &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Solución&lt;/h3&gt;  &lt;p&gt;Para que funcione necesitamos en ASP.NET webforms o en cualquier otro formulario web modificar el atributo &lt;a href="http://www.w3.org/TR/html401/present/frames.html#target-info" target="_blank"&gt;target&lt;/a&gt; del formulario&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;W3C: Tag Form      &lt;br /&gt;&lt;a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.3"&gt;http://www.w3.org/TR/html401/interact/forms.html#h-17.3&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Atributo Target      &lt;br /&gt;&lt;a href="http://www.w3.org/TR/html401/present/frames.html#target-info"&gt;http://www.w3.org/TR/html401/present/frames.html#target-info&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Solución en ASP.NET Webforms&lt;/h3&gt;  &lt;p&gt;Como modificamos la pagina de destino para enviar los datos? con la propiedad &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.button.postbackurl.aspx" target="_blank"&gt;PostbackUrl&lt;/a&gt;.     &lt;br /&gt;Como modificamos el target del formulario? en el cliente lo tenemos que hacer al momento de realizar el click… del boton. Nos ayudamos con &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.button.onclientclick.aspx" target="_blank"&gt;OnClientClick&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Bueno para muestra “basta un botón” así que el ejemplo para descargar &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_71C600E0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_70714234.png" width="990" height="526" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;La pagina padre&lt;/h4&gt;  &lt;blockquote&gt;   &lt;p&gt;Default.aspx&lt;/p&gt;    &lt;div&gt;     &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;Ingrese un Nombre: &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;txtNombre&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ClientIDMode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Static&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;btnAceptar&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Aceptar&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;OnClientClick&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;enviarDatosAFrame(&amp;#39;iframePaginaHija&amp;#39;);&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PostBackUrl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/PaginaIframeDestino.aspx&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;iframe&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;iframePaginaHija&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;iframePaginaHija&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;PaginaIframeDestino.aspx&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;100%&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;200px&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;iframe&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblHora&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblHora&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Si podemos ver el botón que es un webcontrol Button que tiene dos atributos definidos&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.button.onclientclick.aspx" target="_blank"&gt;OnClientClick&lt;/a&gt;: Que nos ayuda a llamar a una funcion del lado del cliente antes de enviar el submit &lt;/li&gt;

    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.button.postbackurl.aspx" target="_blank"&gt;PostbackUrl&lt;/a&gt;: Nos ayuda a definir una pagina de destino diferente a la actual cuando se realice el submit &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;Tenemos un script llamado “enviarDatosAFrame” que es una función del lado del cliente en javascript que nos ayuda a cambiar el atributo target del formulario de ASP.NET 
    &lt;br /&gt;&lt;/p&gt;

  &lt;div&gt;
    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;lt;script type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; enviarDatosAFrame(frameNombre) {
        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; formulario = document.getElementById(&lt;span style="color:#006080;"&gt;&amp;#39;form1&amp;#39;&lt;/span&gt;);
        formulario.target = frameNombre;

        setTimeout(&lt;span style="color:#006080;"&gt;&amp;#39;formularioInicializar(\&amp;#39;&amp;#39;&lt;/span&gt; + formulario.id + &lt;span style="color:#006080;"&gt;&amp;#39;\&amp;#39;);&amp;#39;&lt;/span&gt;, 2000);
    }         
&amp;lt;/script&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;

  

  &lt;div&gt;Mas adelante vemos que es el formularioInicializar.&lt;/div&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTA: Para que nos sirva de esta manera que buscamos el formulario por Id (getElementById), debes tener definido el Id del formulario de ASP.NET (de tu pagina o MasterPage) &lt;/p&gt;

  &lt;div&gt;&amp;#160;&lt;/div&gt;

  &lt;div&gt;&amp;#160;&lt;/div&gt;

  &lt;div align="left"&gt;&amp;#160;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;h4&gt;La pagina destino (el contenido del iframe)&lt;/h4&gt;

&lt;blockquote&gt;
  &lt;p&gt;PaginaIframeDestino.aspx (en el ejemplo) 
    &lt;br /&gt;&lt;/p&gt;

  

  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;Nombre: &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblNombre&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblNombre&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblHora&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;lblHora&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Label&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  

  &lt;p&gt;Tengo definido en la pagina la directiva &lt;a href="http://msdn.microsoft.com/es-es/library/ms228169.aspx" target="_blank"&gt;PreviousPageType&lt;/a&gt; para tener intellisense de lo voy a obtener de la pagina padre 

    &lt;br /&gt;&lt;/p&gt;

  &lt;div&gt;
    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;lt;%@ Page Language=&lt;span style="color:#006080;"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt; AutoEventWireup=&lt;span style="color:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; CodeFile=&lt;span style="color:#006080;"&gt;&amp;quot;PaginaIframeDestino.aspx.cs&amp;quot;&lt;/span&gt; Inherits=&lt;span style="color:#006080;"&gt;&amp;quot;PaginaIframeDestino&amp;quot;&lt;/span&gt; %&amp;gt;
&amp;lt;%@ PreviousPageType VirtualPath=&lt;span style="color:#006080;"&gt;&amp;quot;~/Default.aspx&amp;quot;&lt;/span&gt;  %&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;

  

  &lt;p&gt;
    &lt;br /&gt;En el codebehind… 

    &lt;br /&gt;&lt;/p&gt;

  

  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
   {
       &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (PreviousPage != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)
       {
           &lt;span style="color:#008000;"&gt;//Sin el atributo de pagina PreviousPageType &lt;/span&gt;
           &lt;span style="color:#008000;"&gt;//TextBox txt = (TextBox)PreviousPage.FindControl(&amp;quot;txtNombre&amp;quot;);&lt;/span&gt;
           &lt;span style="color:#008000;"&gt;//string nombre = txt.Text;&lt;/span&gt;

           &lt;span style="color:#008000;"&gt;//Con el atributo de pagina PreviousPageType, &lt;/span&gt;
           &lt;span style="color:#008000;"&gt;//tenemos acceso a intellisense de PreviousPage (que agregamos una propieddad publica) &lt;/span&gt;
           &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; nombre = PreviousPage.Nombre;


           lblNombre.Text = nombre;
       }

       lblHora.Text = DateTime.Now.ToLongTimeString();
   }&lt;/pre&gt;

  

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;NOTA en la pagina padre (default.aspx) tengo una propiedad para recuperarla en la destino 
    &lt;br /&gt;&lt;/p&gt;

  &lt;div&gt;
    &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Nombre {
        get {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; txtNombre.Text;
        }
    }
...&lt;/pre&gt;
  &lt;/div&gt;

  
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Colocar el atributo target directamente en el form? por si lo pensaste colocar aquí…&lt;/h3&gt;

&lt;p&gt;Hacer esto significaría que todo postback de esa pagina tendrá como target el definamos “estáticamente allí”… si lo hacemos con javascript a este cambio &lt;strong&gt;será dinámico&lt;/strong&gt; y solamente hay que agregar al control que hace el sumbit la funcionalidad de que ejecute, previo submit, el cambio de target&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_29E42C5F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_328484EB.png" width="538" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Con JQuery: Agregar funcionalidad no intrusiva en botón&lt;/h3&gt;

&lt;p&gt;Con la ayuda de jQuery podemos armar una función que nos ayude a la tarea de modificar el target del formulario a partir de la configuración de un botón si necesidad de adicionar OnClientClick sino simplemente configurando el botón con unos atributos&lt;/p&gt;

&lt;p&gt;En este ejemplo, para probar los atributos data de jQuery, se me ocurrió utilizar data-FrameDestino para definir el nombre del iframe donde quiero enviar los datos y como todavía no se como es el selector para “data”, utilice un selector de clase css, entonces todos los botones con la clase “postbackToFrame” tendrán esta funcionalidad&lt;/p&gt;

&lt;p&gt;El botón queda así: 
  &lt;br /&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;btnAceptarConjQuery&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Aceptar (con jQuery)&amp;quot;&lt;/span&gt; 
        &lt;span style="color:#ff0000;"&gt;PostBackUrl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/PaginaIframeDestino.aspx&amp;quot;&lt;/span&gt; 
        &lt;span style="color:#ff0000;"&gt;CssClass&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;postbackToFrame&amp;quot;&lt;/span&gt; 
        &lt;span style="color:#ff0000;"&gt;data-frameDestino&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;iframePaginaHija&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;



&lt;p&gt;La función jQuery&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;lt;script type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    $(document).ready(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {
        $(&lt;span style="color:#006080;"&gt;&amp;quot;.postbackToFrame&amp;quot;&lt;/span&gt;).click(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {
            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; form = $(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;).parents(&lt;span style="color:#006080;"&gt;&amp;quot;form:first&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; formNombre = $(form).attr(&lt;span style="color:#006080;"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; frameNombre = $(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;).data(&lt;span style="color:#006080;"&gt;&amp;quot;frameDestino&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (frameNombre != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; || frameNombre != &lt;span style="color:#006080;"&gt;&amp;#39;undefined&amp;#39;&lt;/span&gt;) {

                $(form).attr(&lt;span style="color:#006080;"&gt;&amp;#39;target&amp;#39;&lt;/span&gt;, frameNombre);
            }

            setTimeout(&lt;span style="color:#006080;"&gt;&amp;#39;formularioInicializar(\&amp;#39;&amp;#39;&lt;/span&gt; + formNombre + &lt;span style="color:#006080;"&gt;&amp;#39;\&amp;#39;);&amp;#39;&lt;/span&gt;, 2000);
        });
    })
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Mas adelante vemos que es el formularioInicializar…&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Modificamos el target del form, pero las siguientes acciones toman el mismo camino. Como inicializamos?&lt;/h3&gt;

&lt;p&gt;Cuando modificamos en el cliente el target del formulario el mismo permanece allí y cualquier otra acción que involucre un postback se dirigirá al target correspondiente. Si en la pagina tenemos mas botones, linkbutton o cualquier control que realice un submit tomara el valor del formulario que configuramos&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Si llegamos a necesitar &lt;/strong&gt;que el valor del target se inicialice debemos llamar a una función para tal motivo luego de un tiempo prudencial del submit, en mi caso 2000 milisegundos&lt;/p&gt;

&lt;p&gt;Con jQuery&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;lt;script type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; formularioInicializar(formularioNombre) {
        $(&lt;span style="color:#006080;"&gt;&amp;#39;#&amp;#39;&lt;/span&gt; + formularioNombre).attr(&lt;span style="color:#006080;"&gt;&amp;#39;target&amp;#39;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;#39;&amp;#39;&lt;/span&gt;);
    }      
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;O como la primer versión con javascript puro.&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&amp;lt;script type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; formularioInicializar(formularioNombre) {
        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; form = document.getElementById(formularioNombre);
        formt.target =&lt;span style="color:#006080;"&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
    }      
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;NOTA: Seria bueno este inicializar formulario reciba el target tambien y podemos unificar todas las funciones que modifican este atributo&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;h3&gt;Ejemplo para descargar&lt;/h3&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Espero que les sirva de ayuda o guía.&lt;/p&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=210" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+4.0/default.aspx">ASP.NET 4.0</category></item><item><title>[ASP.NET] Modificar la salida HTML para Compactar (Minify). En el Render (RegEx, YUI Compresor for .NET) , con Response.Filter y con PageParserFilter</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/02/15/asp-net-modificar-la-salida-html-para-compactar-minify-en-el-render-regex-yui-compresor-for-net-con-response-filter-y-con-pageparserfilter.aspx</link><pubDate>Tue, 15 Feb 2011 13:04:39 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:209</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=209</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=209</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/02/15/asp-net-modificar-la-salida-html-para-compactar-minify-en-el-render-regex-yui-compresor-for-net-con-response-filter-y-con-pageparserfilter.aspx#comments</comments><description>&lt;p&gt;Como en los &lt;a href="http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/35d44697-32e5-4c39-b67c-970033f0a78b" target="_blank"&gt;foros de MSDN alguien necesitaba de un tema similar&lt;/a&gt;, lo tenia en borrador y encontré el “justificativo” de terminarlo. Ahora lo tengo para referencias de &lt;strong&gt;“opciones de capturar la salida HTML”, &lt;/strong&gt;encubriendo para minificar el HTML resultante.&lt;/p&gt;  &lt;h3&gt;Que es Compactar (Minify) HTML?&lt;/h3&gt;  &lt;p&gt;La idea es limpiar el HTML resultante de caracteres que no son necesarios para renderizar la pagina (&lt;a href="http://www.websiteoptimization.com/speed/tweak/whitespace/" target="_blank"&gt;espacios en blanco innecesarios&lt;/a&gt;, salto de línea) esto se llama &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Minification_(programming)" target="_blank"&gt;Minificar (Minification&lt;/a&gt;) &lt;/b&gt;Por que son innecesarios estos caracteres? Solo están para una mejor lectura para nosotros “los mortales desarrolladores” la maquina no los necesita.. y el HTML tampoco :)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;Aquí utilizare de sinónimo Minificar = Minimizar = Compactar&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Puedes ver con un ejemplo online de esta tarea: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://kangax.github.com/html-minifier/"&gt;http://kangax.github.com/html-minifier/&lt;/a&gt; o en esta &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.willpeavy.com/minifier/"&gt;http://www.willpeavy.com/minifier/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Veamos a “vista de águila”…&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="5" width="500"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;strong&gt;Antes&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="250"&gt;&lt;strong&gt;Después&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_621DF831.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_230C2BFC.png" width="185" height="419" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="250"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_034D2C67.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_1B1C8769.png" width="226" height="142" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Se utiliza generalmente para los Javascript, y los CSS donde existen muchas herramientas online, incluso para .NET el &lt;a href="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx" target="_blank"&gt;Microsoft Ajax Minifier&lt;/a&gt;.&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Es necesario compactar la salida HTML?&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;“&lt;a href="http://diccionario.babylon.com/poner_los_huevos_en_la_misma_canasta/" target="_blank"&gt;No colocar todos los huevos en la misma canasta/cesta”&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Depende… utilizando herramientas como &lt;a href="http://developer.yahoo.com/yslow/" target="_blank"&gt;YSlow&lt;/a&gt; o &lt;a href="http://code.google.com/speed/page-speed/" target="_blank"&gt;Page Speed&lt;/a&gt; no darán información en que lugar “ganamos más” optimizando. Y no siempre es en la compactación del HTML, ya que con &lt;a href="http://technet.microsoft.com/en-us/library/cc771003(WS.10).aspx" target="_blank"&gt;la configuración de la Compresión HTTP (gzip) en el IIS&lt;/a&gt; es suficiente.&lt;/p&gt;  &lt;h4&gt;Entonces que tenemos que compactar?&lt;/h4&gt;  &lt;p&gt;Lo que si es necesario es comprimir, compactar y agrupar (son tres técnicas que en conjunto logran reducir tiempos deF descarga) los CSS y JS porque allí si ganamos en cantidad de archivos a descargar, como así también los CSS Sprites pero bueno eso ya es otro tema&lt;/p&gt;  &lt;p&gt;Todo el mundo ya conoce que tenemos herramientas para estas tareas como por ejemplo &lt;a href="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx" target="_blank"&gt;Microsoft Ajax Minifier&lt;/a&gt; o &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;YUI Compressor for .NET&lt;/a&gt; (u otras similares) Algunas con todas las características que necesitamos otras con menos.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/02/16/noticia-ajax-minifier-4-0-release-y-con-soporte-de-minificar-los-css.aspx" target="_blank"&gt;[Noticia] Ajax Minifier 4.0 Release, y con soporte de minificar los CSS! :)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Primero lo primero: Como modificamos el HTML resultante?&lt;/h3&gt;  &lt;p&gt;Si conocemos el &lt;a href="http://msdn.microsoft.com/es-es/library/ms178472.aspx" target="_blank"&gt;ciclo de vida de una pagina ASP.NET&lt;/a&gt;, lo que se nos viene a la cabeza como lugar para realizar la acción es el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt;, por lo que hay que sobrescribirlo. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;La idea la tome &lt;/em&gt;&lt;a href="http://stackoverflow.com/questions/531631/get-html-of-current-page-without-viewstate-asp-net" target="_blank"&gt;&lt;em&gt;por aquí&lt;/em&gt;&lt;/a&gt;&lt;em&gt; para obtener el HTML resultante, que era para quitar el Viewstate, así que nos sirve para este ejemplo.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Ahora el objetivo: Minimizar el HTML&lt;/h3&gt;  &lt;p&gt;Lo primero que se nos viene la cabeza es reemplazar cadenas, y allí el “balón de oro” es el que tenga mejor performance para cadenas inmutables ;)&lt;/p&gt;  &lt;p&gt;Muy bueno este articulo: &lt;a href="http://blogs.msdn.com/b/debuggingtoolbox/archive/2008/04/02/comparing-regex-replace-string-replace-and-stringbuilder-replace-which-has-better-performance.aspx" target="_blank"&gt;Comparing RegEx.Replace, String.Replace and StringBuilder.Replace – Which has better performance?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pero además, vamos a necesitar si o si expresiones regulares (esos textos que como siempre digo parece que un &lt;a href="http://es.wikipedia.org/wiki/Vulcano_(Star_Trek)" target="_blank"&gt;Vulcano&lt;/a&gt; los haya escrito) para detectar algunos patrones que nos son simples de buscar. Entonces para el ejemplo RegEx.Replace. (&lt;strike&gt;perdonen pero hay que sufrir con esto de expresiones regulares&lt;/strike&gt;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Objetivos secundarios de este post&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Vamos a ver opciones para modificar el HTML resultante para minimizarlo, las complicaciones que podamos tener y porque no es uno de los pilares de la optimización pero aunque no lo utilicemos veremos tecnicas que en alguna oportunidad nos pueden ayudar para otras tareas de modificar la salida:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#000000"&gt;Modificar la salida de una pagina HTML &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#000000"&gt;Seguir &lt;strike&gt;sufriendo&lt;/strike&gt; utilizando con expresiones regulares y como nos ayudan bastante (aunque no las entendamos luego de 1 hora)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font color="#000000"&gt;Utilizar los &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.httpresponse.filter.aspx" target="_blank"&gt;Response.Filter&lt;/a&gt; (Filtros para la salida)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font color="#000000"&gt;Conocer y ver una implementación (de terceros)&lt;/font&gt; de &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Que opciones tenemos para minimizar el HTML&lt;/strong&gt;&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Sobrescribimos el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt; de una pagina, y “limpiamos” con expresiones regulares &lt;/li&gt;    &lt;li&gt;Sobrescribimos el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt; y limpiamos con componentes como el &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;YUI Compressor for .NET&lt;/a&gt;       &lt;ol&gt;       &lt;li&gt;Utilizamos &lt;a href="http://regexadvice.com/blogs/mash/archive/2008/04/27/Update-to-CSS-Minification.aspx" target="_blank"&gt;la formidable clase en C#&lt;/a&gt; para minimizar CSS realizada por &lt;a href="http://regexadvice.com/blogs/mash/default.aspx" target="_blank"&gt;Michael Ash&lt;/a&gt; que es la que utiliza el &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;YUI Compressor for .NET&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Un poco mas “técnicos”… Utilizamos &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.httpresponse.filter.aspx" target="_blank"&gt;Response.Filter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Vamos hasta “al infinito y mas allá”. Utilizamos &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt;.       &lt;br /&gt;&lt;em&gt;Aqui nos ayudamos con un componente que ya lo tiene implementado&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;[Idea a futuro] Componente del IIS para limpiar caracteres en blanco… (no lo tengo implementado, si alguien tiene un ejemplo bienvenido en los comentarios)      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;&lt;u&gt;OPCION 1&lt;/u&gt;: Sobrescribimos el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt; de una pagina, limpiamos con expresiones regulares&lt;/h4&gt;  &lt;p&gt;Aquí sobrescribimos el evento &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt; para obtener la cadena de salida y tratarla&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Render(HtmlTextWriter writer)
    {

        &lt;span style="color:#008000;"&gt;//Obtemos el HTML resultante dentro de un TextWriter&lt;/span&gt;
        TextWriter tw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();

        HtmlTextWriter htmlWriter = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; HtmlTextWriter(tw);

        &lt;span style="color:#008000;"&gt;//Renderizamos la pagina&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.Render(htmlWriter);

        htmlWriter.Close();

        &lt;span style="color:#008000;"&gt;//Obtenemos la cadena del HTML&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; htmlResultante = tw.ToString();

        &lt;span style="color:#008000;"&gt;//Limpiando&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; htmlMin = YODA.Web.HTMLUtil.MinificarHTML(htmlResultante);

        &lt;span style="color:#008000;"&gt;//Escribiendo la salida&lt;/span&gt;
        writer.Write(htmlMin);
    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Haciendo uso de expresiones regulares simples podremos Minificar el HTML, solo para algunos patrones (espacios entre tags, saltos de linea, tabs, espacios en blanco mayores que 2&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; YODA.Web
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; HTMLUtil
    {
        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; HTMLUtil()
        {
            &lt;span style="color:#008000;"&gt;//&lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// TODO: Add constructor logic here&lt;/span&gt;
            &lt;span style="color:#008000;"&gt;//&lt;/span&gt;
        }

        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; MinificarHTML(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; htmlCadena)
        {
            Regex regEspaciosEntreTags = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#006080;"&gt;@&amp;quot;&amp;gt;(?! )\s+&amp;quot;&lt;/span&gt;, RegexOptions.Singleline);
            Regex regSaltoDeLinea = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#006080;"&gt;@&amp;quot;([\n\s])+?(?&amp;lt;= {2,})&amp;lt;&amp;quot;&lt;/span&gt;, RegexOptions.Singleline);
            Regex regSaltoDeLinea2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#006080;"&gt;@&amp;quot;\r\n&amp;quot;&lt;/span&gt;, RegexOptions.Singleline);
            Regex regTabs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#006080;"&gt;@&amp;quot;\t&amp;quot;&lt;/span&gt;, RegexOptions.Singleline);
            Regex regEspaciosEnBlanco = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Regex(&lt;span style="color:#006080;"&gt;@&amp;quot;\s{2,}&amp;quot;&lt;/span&gt;, RegexOptions.Singleline);


            htmlCadena = regEspaciosEntreTags.Replace(htmlCadena, &lt;span style="color:#006080;"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;);
            htmlCadena = regSaltoDeLinea.Replace(htmlCadena, &lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;&amp;quot;&lt;/span&gt;);
            htmlCadena = regSaltoDeLinea2.Replace(htmlCadena, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty);
            htmlCadena = regTabs.Replace(htmlCadena, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty);
            htmlCadena = regEspaciosEnBlanco.Replace(htmlCadena, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty);

            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; htmlCadena.ToString();
        }

    }  
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Puedes buscar en &lt;a href="http://regexlib.com/"&gt;regexlib.com&lt;/a&gt; algunos ejemplos. En el ejemplo para descargar dejo varias implementaciones.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;NOTA IMPORTANTE: Este código no es del todo óptimo, pero sirve como ejemplo. Ya que espacios de variables en javascript&amp;#160; var vble1 = “&amp;#160;&amp;#160; valor 1”; lo optimiza por los espacios; Los saltos de linea no tiene en cuenta si lo que viene es una funcion js, y asi sucesivamente. Vuelvo a insistir, antes que el lector se acuerde de mi familia, que esto es un &lt;u&gt;ejemplo de como modificar&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;&lt;u&gt;OPCION 2:&lt;/u&gt; Sobrescribimos el método &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.control.render.aspx" target="_blank"&gt;Render&lt;/a&gt; y limpiamos con componentes como el &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;YUI Compressor for .NET&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_4F408AE2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_2FCE344F.png" width="974" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NOTA Opción 2: Aquí utilice &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;el componente&lt;/a&gt; pero dentro del componente la clase que hace la magia de minimizar es un código de autoría de &lt;a href="http://regexadvice.com/blogs/mash/default.aspx" target="_blank"&gt;Michael Ash&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;En el código fuente de &lt;a href="http://yuicompressor.codeplex.com/" target="_blank"&gt;YUI Compressor for .NET&lt;/a&gt; 

    &lt;br /&gt;&lt;a href="http://yuicompressor.codeplex.com/SourceControl/changeset/view/62134#983563"&gt;http://yuicompressor.codeplex.com/SourceControl/changeset/view/62134#983563&lt;/a&gt; 

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;[El código original]&lt;/strong&gt; Update to CSS Minification (por &lt;a href="http://regexadvice.com/blogs/mash/default.aspx" target="_blank"&gt;Michael Ash&lt;/a&gt;) 

    &lt;br /&gt;&lt;a href="http://regexadvice.com/blogs/mash/archive/2008/04/27/Update-to-CSS-Minification.aspx"&gt;http://regexadvice.com/blogs/mash/archive/2008/04/27/Update-to-CSS-Minification.aspx&lt;/a&gt;&amp;#160; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Asi que lo dejo también dentro de ejemplo a descargar en la carpeta App_Code&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;NOTA: No podremos utilizar &lt;a href="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx" target="_blank"&gt;Microsoft Ajax Minifier&lt;/a&gt;&amp;#160; solo tenemos dos métodos que nos nos ayudan a minimizar JS y CSS incluso de obuscar para minimizar el nombre de variables&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_610CF8E2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_7A64D64F.png" width="827" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;Opcion 1.1, 2.1 (Tip): Heredar comportamiento (sobreescribir el Render en un solo lugar)&lt;/h4&gt;

&lt;p&gt;Ambas Opciones (1, 2) que sobrescriben el Render pueden estar en una Pagina Base para luego heredarla o en una Master base, como el ejemplo&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; YODA.Web
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MasterPageBase : System.Web.UI.MasterPage
             
    {
        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; MasterPageBase()
        {
            &lt;span style="color:#008000;"&gt;//&lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// TODO: Add constructor logic here&lt;/span&gt;
            &lt;span style="color:#008000;"&gt;//&lt;/span&gt;
        }

        &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Render(HtmlTextWriter writer)
        {

            &lt;span style="color:#008000;"&gt;//Obtemos el HTML resultante dentro de un TextWriter&lt;/span&gt;
            TextWriter tw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();

            HtmlTextWriter htmlWriter = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; HtmlTextWriter(tw);

            &lt;span style="color:#008000;"&gt;//Renderizamos la pagina&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.Render(htmlWriter);

            htmlWriter.Close();

            &lt;span style="color:#008000;"&gt;//Obtenemos la cadena del HTML&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; htmlResultante = tw.ToString();
            
            &lt;span style="color:#008000;"&gt;//Limpiando&lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; htmlMin = YODA.Web.HTMLUtil.MinificarHTML(htmlResultante);

            &lt;span style="color:#008000;"&gt;//Escribiendo salida&lt;/span&gt;
            writer.Write(htmlMin);

        }
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;hay que hacer que la Master de nuestro sitio herede de la MasterPageBase que creamos&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; partial &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SiteWithOverrrideRender : YODA.Web.MasterPageBase
{
    &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
    {

    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;&lt;u&gt;OPCION 3:&lt;/u&gt; Utilizamos &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.httpresponse.filter.aspx" target="_blank"&gt;Response.Filter&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Aqui debemos crear un filtro, que es una clase que hereda en este ejemplo de MemoryStream y realice las acciones correspondientes&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“(…)Cuando se crea un objeto Stream y se establece la propiedad Filter para el objeto Stream, toda la salida HTTP enviada por &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.httpresponse.write.aspx"&gt;Write&lt;/a&gt; pasa por el filtro.(…)”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div align="left"&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; YODA.Web
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MinificarHTMLFiltro : MemoryStream
    {
        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Stream HtmlStream { get; set; }

        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; MinificarHTMLFiltro(Stream htmlStream)
        {
            &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.HtmlStream = htmlStream;
        }


        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Write(&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] buffer, &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; offset, &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; count)
        {
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; contenidoEnElBuffer = UTF8Encoding.UTF8.GetString(buffer);

            &lt;span style="color:#008000;"&gt;//Acciones a realizar&lt;/span&gt;

            &lt;span style="color:#008000;"&gt;//Accion 1: Minificar salida limpinado tabs/espacios en blanco&lt;/span&gt;
            contenidoEnElBuffer = YODA.Web.HTMLUtil.MinificarHTML3(contenidoEnElBuffer);

            HtmlStream.Write(UTF8Encoding.UTF8.GetBytes(contenidoEnElBuffer), offset, UTF8Encoding.UTF8.GetByteCount(contenidoEnElBuffer));
        }
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Y lo utilizamos en el Load de la pagina, simple no?&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
    {
        Response.Filter = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MinificarHTMLFiltro(Response.Filter);
    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;&lt;u&gt;OPCION 4:&lt;/u&gt; Utilizamos &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;Como ya lo dije, aquí es utilizando &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt;, pero no comente que es un poco difícil (&lt;strike&gt;y doloroso&lt;/strike&gt;) crear una clase que herede de &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt; y haga lo que necesitamos, ya que deben construir todos los controles del árbol de controles de una pagina… 

  &lt;br /&gt;Gracias a enlace que compartió &lt;a href="http://geekswithblogs.net/jaullo/Default.aspx" target="_blank"&gt;Jason Ulloa&lt;/a&gt; en los &lt;a href="http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/35d44697-32e5-4c39-b67c-970033f0a78b" target="_blank"&gt;foros de MSDN&lt;/a&gt;, pude llegar hasta aquí:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html" target="_blank"&gt;ASP.NET white space cleaning with no runtime cost&lt;/a&gt; (by &lt;a href="http://omari-o.blogspot.com/" target="_blank"&gt;Omari Нa&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Que es una implementación de &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt; justamente para el objetivo de limpiar los espacios en blanco. Y podremos utilizarlo en ASP.NET Webforms y en ASP.NET MVC&lt;/p&gt;

&lt;p&gt;Como lo implementamos, configuramos? &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Creamos nuestro &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.pageparserfilter.aspx" target="_blank"&gt;PageParserFilter&lt;/a&gt; (o utilizamos un componente) &lt;/li&gt;

  &lt;li&gt;Registramos en la seccion pages del web.config 
    &lt;br /&gt;

    &lt;div&gt;
      &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;    
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;pages&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;pageParserFilterType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;YODA.Web.MinificarHTMLPageParserFilter&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;pages&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;br /&gt; ...&lt;/span&gt;&lt;/pre&gt;
En &lt;a href="http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html" target="_blank"&gt;el ejemplo Omari Нa que lo puedes descargar&lt;/a&gt; 

      &lt;br /&gt;

      &lt;div&gt;
        &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;pages&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;pageParserFilterType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Omari.Web.UI.WhiteSpaceCleaner, WhiteSpaceCleanerForWebFormsAndMVC2&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;pages&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
...&lt;/p&gt;&lt;/pre&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;&amp;#160;&lt;/h4&gt;

&lt;h4&gt;&lt;u&gt;OPCION 5:&lt;/u&gt; [Idea a futuro] Componente del IIS para limpiar caracteres en blanco…minimizar &lt;/h4&gt;

&lt;p&gt;Mejorar… siempre! Para los mas experimentados… Comprimir todo en el IIS. CREAR UN COMPONENTE&lt;/p&gt;

&lt;p&gt;Podríamos armar un componente para el IIS para que comprima el HTML resultante de cualquier pagina… ya existe? por favor háganmelo saber a través de los comentarios&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Ganamos algo? Algunos inconvenientes&lt;/h3&gt;

&lt;p&gt;Comente mas arriba que hay otros lugares en nuestra app web para empezar a optimizar, porque no siempre ganamos haciendo esto de compactar la salida HTML&lt;/p&gt;

&lt;p&gt;Problemas que podemos tener:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Como la minificacion es automática, el documento HTML mal formado puede ocasionar una salida “no bien formada” (con errores para el renderizado en el navegador) (incluso eliminando porciones de contenido) 
    &lt;br /&gt;Por qué puede estar mal formado? porque somos nosotros simples mortales lo que escribimos parte del mismo. Todavía no es todo “autogenerado”, todavía ;) 

    &lt;br /&gt;Es decir: Si alguien se le fue “los dedos” y escribió &lt;strong&gt;&amp;lt;br&amp;gt; /&amp;gt;&lt;/strong&gt;&amp;#160; y al limpiar entre tags no sabremos que puede pasar. 

    &lt;br /&gt;Mas arriba comente algo sobre por ejemplo limpiar bien los saltos de linea que esta demas (y el problema de javascript) 

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;Hay que tener en cuenta el tiempo que involucra tener esta funcionalidad y realizarla por cada pagina, en cada peticion 
    &lt;br /&gt;Con las otras tecnicas se puede mejorar. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Tips/Recomendaciones&lt;/h3&gt;

&lt;p&gt;Esto de compactar HTML ( o CSS y JS) tiene que ir de la mano de otras técnicas para optimiza porque no es tampoco nada recomendable estar haciendo esto siempre, ya que es un punto que hay procesamiento. Por este motivo podemos ayudarnos con:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Comprimir el contenido que se envía al cliente (típicamente con Gzip) ya la mayoría de los “mortales” utilizamos navegadores modernos que soportan recibir este tipo de contenido. &lt;/li&gt;

  &lt;li&gt;Cachear un poco el contenido en el servidor y en el cliente cuando se pueda, &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Algunos tips a tener en cuenta para optimizar aplicaciones web pueden verlo aquí:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[Geeks.ms] &lt;a href="http://geeks.ms/blogs/gperez/archive/2010/05/15/material-chala-t-233-cnicas-ninja-de-optimizaci-243-n-web.aspx" target="_blank"&gt;Material Charla - Técnicas Ninja de Optimización Web&lt;/a&gt; (por &lt;a href="http://geeks.ms/members/gperez/default.aspx"&gt;Gonzalo Perez&lt;/a&gt;) 

    &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dejo otros enlaces mas abajo.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Síntesis &lt;/h3&gt;

&lt;p&gt;Se aprendió además de la idea de minificar el HTML, varias opciones de como modificar la salida HTML de nuestros proyectos con ASP.NET Webforms. 
  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Ejemplo para descargar&lt;/h3&gt;


&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Enlaces&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;u&gt;Response.Filter&lt;/u&gt; 

    &lt;ul&gt;
      &lt;li&gt;
        &lt;div align="left"&gt;Cómo: Almacenar los resultados de una página dinámica para una página HTML en ASP.NET mediante Visual C# .NET 
          &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/810205/es"&gt;http://support.microsoft.com/kb/810205/es&lt;/a&gt;&lt;/div&gt;
      &lt;/li&gt;

      &lt;li&gt;
        &lt;div align="left"&gt;Filtering HTTP Requests with .NET 
          &lt;br /&gt;&lt;a href="http://ondotnet.com/pub/a/dotnet/2003/10/20/httpfilter.html"&gt;http://ondotnet.com/pub/a/dotnet/2003/10/20/httpfilter.html&lt;/a&gt;&lt;/div&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;u&gt;Optimizando sitio web&lt;/u&gt; 

    &lt;ul&gt;
      &lt;li&gt;14 Rules for Faster-Loading Web Sites 
        &lt;br /&gt;&lt;a href="http://stevesouders.com/hpws/rules.php"&gt;http://stevesouders.com/hpws/rules.php&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;Best Practices for Speeding Up Your Web Site 
        &lt;br /&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;http://developer.yahoo.com/performance/rules.html&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;Reducing the file size of HTML documents 
        &lt;br /&gt;&lt;a href="http://code.google.com/speed/articles/optimizing-html.html"&gt;http://code.google.com/speed/articles/optimizing-html.html&lt;/a&gt; 

        &lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;&lt;u&gt;PagePageFilter&lt;/u&gt; 

    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html" target="_blank"&gt;ASP.NET white space cleaning with no runtime cost&lt;/a&gt; (by &lt;a href="http://omari-o.blogspot.com/" target="_blank"&gt;Omari Нa&lt;/a&gt;) &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=209" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+4.0/default.aspx">ASP.NET 4.0</category></item><item><title>[TFS2008] Descargar/Modificar/Publicar Templates de procesos</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/01/11/tfs2008-descargar-modificar-publicar-templates-de-procesos.aspx</link><pubDate>Tue, 11 Jan 2011 12:01:36 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:208</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=208</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=208</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2011/01/11/tfs2008-descargar-modificar-publicar-templates-de-procesos.aspx#comments</comments><description>&lt;p&gt;Hoy me toco modificar un template de un proceso que tenemos en nuestro TFS, siempre lo modificamos online (agregar nuevos campos) pero hoy con &lt;a href="http://team.desarrollosnea.com.ar/blogs/dmorales/" target="_blank"&gt;Diego&lt;/a&gt; decidimos que es hora de hacerlo en un template nuevo, porque que la tarea ardua de&amp;#160; modificar sobre el proyecto “en caliente” no era bueno repetirlo. Además el proceso ya se estandarizó en nuestro sistema de calidad.    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Antes que nada… “las fuentes”!&lt;/h3&gt;  &lt;p&gt;Si quieres hablar, rezar, pensar o realizar alguna acción sobre TFS y tienes a la lengua castellana como “natural” es imposible no caer en algunos de los &lt;a href="http://geeks.ms/blogs/elbruno/archive/2009/11/11/off-topic-post-n-250-mero-1111101000-eres-la-mitad-de-los-10-tipos-de-persona-que-lo-entenderan.aspx" target="_blank"&gt;1000 post&lt;/a&gt; de &lt;a href="http://geeks.ms/blogs/elbruno" target="_blank"&gt;El Bruno&lt;/a&gt; que tiene sobre &lt;a href="http://geeks.ms/blogs/elbruno/archive/tags/Team+Foundation+Server/default.aspx" target="_blank"&gt;TFS&lt;/a&gt; (y otros temas), como se diría por aquí&amp;#160; &lt;a href="http://www.youtube.com/watch?v=qKggsaadZ0s" target="_blank"&gt;“el que sabe… sabe”&lt;/a&gt;. Los invito a visitar su blog… Así que de ahí tomo de referencia para el presente articulo,&amp;#160; también dejo enlaces al final.     &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Empezamos con lo general&lt;/h3&gt;  &lt;p&gt;Para modificar todo es tocar y retocar XML, pero por por suerte tenemos las &lt;a href="http://msdn.microsoft.com/en-us/teamsystem/bb980963.aspx" target="_blank"&gt;Team Foundation Server Power Tools&lt;/a&gt; que tiene el &lt;a href="http://msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#pte" target="_blank"&gt;Process Template Editor&lt;/a&gt;     &lt;br /&gt;para VS2008 tienes &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fbd14eea-781f-45a1-8c46-9f6ba2f68bf0&amp;amp;DisplayLang=en" target="_blank"&gt;TFS 2008: Power Tools (Oct/2008)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cuando instalas tienes en Herramientas el &lt;a href="http://msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#pte" target="_blank"&gt;Process Template Editor&lt;/a&gt; y puedes editar un work item directamente desde el servidor&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_2CA01991.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_39D67CD7.png" width="750" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O puedes abrir un Template de proceso…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_24985162.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_0187DFF2.png" width="775" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Descargar/Publicar Template de Procesos&lt;/h3&gt;  &lt;p&gt;Aqui el primer paso su queremos armar un nuevo template modificando uno actual&lt;/p&gt;  &lt;p&gt;En el menu del VS que es&amp;#160; Team &amp;gt; Team Foundation Server Settings &amp;gt; Process Template Manager…    &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_308A1BC9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_3F24A1E1.png" width="483" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;…o también desde el menú contextual arriba del nombre del servidor en el Explorador&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_614C879A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_21BF244A.png" width="494" height="289" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Y desde alli podremos ralizar el Download de un proceso y su correspondiente &lt;a href="http://msdn.microsoft.com/es-es/library/ms181512.aspx" target="_blank"&gt;Upload&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_2C9C0592.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_28CE3AF5.png" width="485" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Y como seguimos? Modificando los workitems necesarios…&lt;/h3&gt;  &lt;p&gt;Mas adelante publico otro ejemplo de modificar un Workitem (el que tuvimos que agregar), pero tienes este HowTo de elBruno &lt;a href="http://geeks.ms/blogs/elbruno/archive/2008/10/02/tfs2008-howto-agregar-un-campo-personalizado-a-la-definici-243-n-de-un-workitem.aspx" target="_blank"&gt;[TFS2008] HowTo: Agregar un campo personalizado a la definición de un WorkItem&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Espero que les sirva. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Enlaces&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/teamsystem/bb980963.aspx" target="_blank"&gt;Team Foundation Server Power Tools&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#pte" target="_blank"&gt;Process Template Editor&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668982.aspx" target="_blank"&gt;How To: Customize a Process Template in Visual Studio Team Foundation Server&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Varios de TFS y Templates      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms181510.aspx" target="_blank"&gt;Administrar plantillas de proceso&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms243782.aspx" target="_blank"&gt;Personalizar plantillas de procesos&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms181512.aspx" target="_blank"&gt;Cargar una plantilla de procesos&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://geeks.ms/blogs/elbruno" target="_blank"&gt;El Bruno&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://geeks.ms/blogs/elbruno/archive/2008/10/02/tfs2008-howto-agregar-un-campo-personalizado-a-la-definici-243-n-de-un-workitem.aspx" target="_blank"&gt;[TFS2008] HowTo: Agregar un campo personalizado a la definición de un WorkItem&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=208" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category></item><item><title>[Control+F 2010] Curso Terminado: .NET Junior 160hs (UTN – FRRe)</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/12/27/control-f-2010-curso-terminado-net-junior-160hs-utn-frre.aspx</link><pubDate>Tue, 28 Dec 2010 00:20:05 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:207</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=207</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=207</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/12/27/control-f-2010-curso-terminado-net-junior-160hs-utn-frre.aspx#comments</comments><description>&lt;p&gt;Una vez mas tuve la grata tarea de estar al frente de un curso de Control+F, &lt;a href="http://geeks.ms/blogs/fernandezja/archive/2009/12/21/curso-terminado-becas-control-f-curso-net-240hs-utn-frre.aspx" target="_blank"&gt;al igual que el año pasado&lt;/a&gt;.     &lt;br /&gt;Terminamos a finales de Noviembre las 160 horas de formación de &lt;a href="http://www.becascontrolf.com.ar/cursos/programacion-puntonet.asp#junior" target="_blank"&gt;.NET Junior&lt;/a&gt; en el marco de las &lt;a href="http://www.becascontrolf.com.ar/" target="_blank"&gt;Becas Control+F&lt;/a&gt;&lt;img src="http://i.ixnp.com/images/v6.53/t.gif" alt="" /&gt;, en los laboratorios de la &lt;a href="http://www.frre.utn.edu.ar/" target="_blank"&gt;UTN FRRE&lt;/a&gt;&lt;img src="http://i.ixnp.com/images/v6.53/t.gif" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Aquí los &lt;a href="http://es.wikipedia.org/wiki/Padawan#Padawan" target="_blank"&gt;Padawan&lt;/a&gt;… &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/ControlF_2D00_Curso52_2D00_NETJunior_2D00_UTN_2D00_FRRE_2D00_2010_5F00_463F48E2.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="ControlF-Curso52-NETJunior-UTN-FRRE-2010" border="0" alt="ControlF-Curso52-NETJunior-UTN-FRRE-2010" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/ControlF_2D00_Curso52_2D00_NETJunior_2D00_UTN_2D00_FRRE_2D00_2010_5F00_thumb_5F00_0644F0F6.jpg" width="729" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;El curso&lt;/h3&gt;  &lt;p&gt;En esta versión del curso de 160hs menos horas que el curso anterior del año pasado, esta vez en &lt;a href="http://www.frre.utn.edu.ar/" target="_blank"&gt;UTN FRRE&lt;/a&gt;&lt;img src="http://i.ixnp.com/images/v6.53/t.gif" alt="" /&gt; tenia dos cursos, &lt;a href="http://hernanzini.blogspot.com/2009/12/fin-curso-becas-controlf.html" target="_blank"&gt;unos de ellos los daba Hernán Zini&lt;/a&gt;&amp;#160;&lt;em&gt;(que este año no blogueo fotos todavía)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Temas&lt;em&gt;:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Parte I: Fundamentos de POO con C#, algo de HTML con Javascript, &lt;/li&gt;    &lt;li&gt;Parte II: Basada en el &lt;a href="http://www.microsoft.com/learning/en/us/course.aspx?ID=2310D" target="_blank"&gt;MOC 2310: Developing Web Applications Using Microsoft Visual Studio 2008 SP1&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Las Becas Control+F?&lt;/h3&gt;  &lt;p&gt;Que son las becas? es una iniciativa de capacitación en tecnologías informáticas organizada por el &lt;strong&gt;&lt;a href="http://www.trabajo.gob.ar/" target="_blank"&gt;Ministerio de Trabajo de la Nación (Argentina)&lt;/a&gt;&lt;img src="http://i.ixnp.com/images/v6.53/t.gif" alt="" /&gt;&lt;/strong&gt; en conjunto con &lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="http://www.cessi.org.ar/" target="_blank"&gt;CESSI&lt;/a&gt;&lt;/strong&gt;&lt;img src="http://i.ixnp.com/images/v6.53/t.gif" alt="" /&gt; y empresas de primera línea del sector informático&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Un poco mas de fotos…   &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14471_5F00_1C3B36BB.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SDC14471" border="0" alt="SDC14471" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14471_5F00_thumb_5F00_13B715CA.jpg" width="216" height="163" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14841_5F00_2376AACE.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SDC14841" border="0" alt="SDC14841" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14841_5F00_thumb_5F00_7BAFE309.jpg" width="244" height="164" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14469_5F00_674A1D7E.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SDC14469" border="0" alt="SDC14469" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14469_5F00_thumb_5F00_5D61D9BB.jpg" width="217" height="164" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14840_5F00_300043EB.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SDC14840" border="0" alt="SDC14840" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/SDC14840_5F00_thumb_5F00_22D5F273.jpg" width="244" height="164" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;em&gt;… por si no se dan cuenta nos vimos desde Agosto hasta Noviembre… desde pulóveres hasta remeras &lt;img style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Guiño" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/wlEmoticon_2D00_winkingsmile_5F00_4B9157BC.png" /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Mas info&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Becas Control+F      &lt;br /&gt;&lt;a href="http://www.becascontrolf.com.ar/" target="_blank"&gt;http://www.becascontrolf.com.ar/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=207" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Formacion/default.aspx">Formacion</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Cursos/default.aspx">Cursos</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Control_2B00_F/default.aspx">Control+F</category></item><item><title>[Sync Framework] COM Exception: Retrieving the COM class factory for component with CLSID {031913FE-EB2A-49F2-B2BE-B996B2448CD4} failed due to the following error: 80040154</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/12/21/sync-framework-com-exception-retrieving-the-com-class-factory-for-component-with-clsid-031913fe-eb2a-49f2-b2be-b996b2448cd4-failed-due-to-the-following-error-80040154.aspx</link><pubDate>Tue, 21 Dec 2010 22:22:35 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:206</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=206</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=206</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/12/21/sync-framework-com-exception-retrieving-the-com-class-factory-for-component-with-clsid-031913fe-eb2a-49f2-b2be-b996b2448cd4-failed-due-to-the-following-error-80040154.aspx#comments</comments><description>&lt;p&gt;Muy largo el titulo! Disculpas. (Pero para el que necesita vendría bien encontrarlo por el titulo como lo queria hacer yo)&lt;/p&gt;  &lt;p&gt;Bueno estas cosas hay que publicarlas… tal como viene a la vida y se nos presenta en nuestras pantallas&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Introducción &lt;/h3&gt;  &lt;p&gt;Utilizando en un proyecto &lt;a href="http://msdn.microsoft.com/en-us/sync/default" target="_blank"&gt;Microsoft Sync Framework&lt;/a&gt;&amp;#160;&lt;a href="http://twitter.com/syncfx" target="_blank"&gt;(@syncfx&lt;/a&gt;) para utilizarlo en un componente nos descargamos en nuestro equipo de&amp;#160; proyecto el &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ee6af141-79d0-4351-a4a0-ea89bb29dcf5&amp;amp;displayLang=es" target="_blank"&gt;SDK 2.1&lt;/a&gt; (&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=afd89099-d589-423c-9762-78096aa95ac2&amp;amp;displaylang=en" target="_blank"&gt;la version 4.0 esta en CTP desde Oct/2010&lt;/a&gt; para los &lt;a href="http://en.wikipedia.org/wiki/Kamikaze" target="_blank"&gt;kamikaze&lt;/a&gt;), todo bien para el desarrollo en mi SO de 32bits pero cuando alguien en el equipo de desarrollo con un sistema operativo a 64bits lo quiso levantar, nos arrojaba el siguiente mensaje…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Mensaje de la excepción:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;Retrieving the COM class factory for component with CLSID {031913FE-EB2A-49F2-B2BE-B996B2448CD4} failed due to the following error: 80040154 Clase no registrada (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Mensaje&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;Retrieving the COM class factory for component with CLSID {C201C012-C929-4D72-B9C5-341D48630630} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Imagen de la excepción:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_75F9180B.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_003A169F.png" width="712" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Por allí en la InnerException nos tiraba una clave en la Registry dentro de &lt;a href="http://msdn.microsoft.com/es-es/library/aa384249.aspx" target="_blank"&gt;WOW64&lt;/a&gt; (emulación de 32bits dentro del SO de 64bits) entonces buscando algo que me diga que era &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Aclaración:&lt;/u&gt;&lt;/strong&gt; en la maquina de SO de 64bits se instalo el &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ee6af141-79d0-4351-a4a0-ea89bb29dcf5&amp;amp;displayLang=es" target="_blank"&gt;SDK 2.1&lt;/a&gt; para su versión&amp;#160; &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_7ABB802D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_52A8D10E.png" width="219" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Solución&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Bueno, es obvia, si el proyecto esta compilado para x86, y los componentes no los tengo instalado los debo instalar en la de 64bit para x86, pero como no lo hicimos así y en el deploy vamos a encontrarnos con maquinas de diferentes plataformas entonces cambiamos la configuración con que se compila a que sea para &lt;a href="http://msdn.microsoft.com/en-us/library/5b4eyb0k.aspx" target="_blank"&gt;“Any CPU”&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_1F6C97A5.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/image_5F00_thumb_5F00_2402A25F.png" width="255" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Antes… (un poco de historia)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Buscando en los foros de Sync Framework dimos con muchos ejemplos de cuando no existía al versión para 64bits, pero desde la 2.0 la tenemos disponible.    &lt;br /&gt;En la lista de discusion de los ejemplos de MS Sync en MSDN Code Gallery encontré &lt;a href="http://code.msdn.microsoft.com/sync/Thread/View.aspx?ThreadId=258" target="_blank"&gt;también en este pequeño cambio que propusieron&lt;/a&gt;.     &lt;br /&gt;Antes la única forma era emular en la maquina de 64bits, 32bits (el famoso WOW64) &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Enlaces&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ee6af141-79d0-4351-a4a0-ea89bb29dcf5&amp;amp;displayLang=es" target="_blank"&gt;Kit de desarrollo de software (SDK) de Microsoft Sync Framework 2.1&lt;/a&gt;      &lt;br /&gt;Aqui encontraran tanto para plataformas x86 como x64.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c3b2f32b-12a9-40b8-9e83-c452ac546c49&amp;amp;displayLang=es" target="_blank"&gt;Microsoft Sync Framework 2.1 Redistributable Package&lt;/a&gt;      &lt;br /&gt;Para las maquinas para realizar el deployment necesitamos los paquetes de redistribución.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://social.microsoft.com/Forums/en/category/sync" target="_blank"&gt;Microsoft Sync Framework Forum&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=206" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/SyncFx/default.aspx">SyncFx</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Sync+Framework/default.aspx">Sync Framework</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Microsoft+Sync+Framework/default.aspx">Microsoft Sync Framework</category></item><item><title>[Libros] Comentarista! ;) ..de libros de Murach sobre VB.NET 2008 / ASP.NET 3.5 / ADO.NET, LINQ &amp; EF</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/11/11/libros-comentarista-de-libros-de-murach-sobre-vb-net-2008-asp-net-3-5-ado-net-linq-amp-ef.aspx</link><pubDate>Thu, 11 Nov 2010 18:06:26 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:204</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=204</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=204</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/11/11/libros-comentarista-de-libros-de-murach-sobre-vb-net-2008-asp-net-3-5-ado-net-linq-amp-ef.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/BooksMurach_5F00_003_5F00_30569D57.jpg"&gt;&lt;img style="border-right-width:0px;margin:0px 15px 0px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="BooksMurach_003" border="0" alt="BooksMurach_003" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/BooksMurach_5F00_003_5F00_thumb_5F00_3DE90DC5.jpg" width="384" height="218" /&gt;&lt;/a&gt;Hace un par de meses me contactaron de &lt;a href="http://www.murach.com/"&gt;Murach&lt;/a&gt; para realizar un comentario sobre algunos libros, que luego me enviaron …y estoy en deuda en este tema. Hoy justamente comente un par de enlaces y volví a este tema desde los foros de MSDN donde recomendamos unos de estos libros.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.asp.net/community/books"&gt;http://www.asp.net/community/books&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.asp.net/community/books/aspnet-web-forms-books"&gt;http://www.asp.net/community/books/aspnet-web-forms-books&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Este post lo tengo en borrador desde hace unos cuantos meses, así que en los próximos días estaré publicando brevemente que opinión merecen estos libros (aunque sea el de la tecnología que mas me agrada que es ASP.NET, EF).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Por lo pronto pueden ver &lt;strong&gt;la “presencia” que tienen&lt;/strong&gt;, pero no se asusten están armados/impresos didácticamente cuando se abre en una hoja del lado izquierdo tenemos la teoría y del derecho la practica/código de la misma, particularmente me me gusto esta interesante propuesta de impresión. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Los libros:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.murach.com/books/vb08/index.htm"&gt;Murach&amp;#39;s Visual Basic 2008&lt;/a&gt;       &lt;br /&gt;by Anne Boehm       &lt;br /&gt;25 chapters, 820 pages, 351 illustrations       &lt;br /&gt;ISBN: 978-1-890774-45-5       &lt;br /&gt;… la versión nueva es la &lt;a href="http://www.murach.com/books/vb10/index.htm"&gt;Visual Basic 2010&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;a href="http://www.amazon.com/Murachs-Visual-Basic-2008-Boehm/dp/1890774456"&gt;Comprar en&lt;/a&gt; &lt;a href="http://www.amazon.com/Murachs-Visual-Basic-2008-Boehm/dp/1890774456"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="amazon" border="0" alt="amazon" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/amazon_5F00_77C82AE4.jpg" width="87" height="17" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.murach.com/books/dvb8/index.htm"&gt;ADO.NET 3.5, LINQ, and the Entity Framework with VB 2008&lt;/a&gt;       &lt;br /&gt;by Anne Boehm       &lt;br /&gt;20 chapters, 708 pages, 308 illustrations       &lt;br /&gt;ISBN 978-1-890774-52-3       &lt;br /&gt;&lt;a href="http://www.amazon.com/Murachs-ADO-NET-LINQ-Entity-Framework/dp/1890774529"&gt;Comprar en&lt;/a&gt; &lt;a href="http://www.amazon.com/Murachs-ADO-NET-LINQ-Entity-Framework/dp/1890774529"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="amazon" border="0" alt="amazon" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/amazon_5F00_6CFD67A7.jpg" width="87" height="17" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.murach.com/books/avb8/index.htm"&gt;ASP.NET 3.5 Web Programming with VB 2008&lt;/a&gt;       &lt;br /&gt;by Anne Boehm       &lt;br /&gt;29 chapters, 1000 pages, 455 illustrations       &lt;br /&gt;ISBN: 978-1-890774-47-9       &lt;br /&gt;&lt;a href="http://www.amazon.com/Murachs-ASP-NET-3-5-Programming-2008/dp/1890774472"&gt;Comprar en&lt;/a&gt; &lt;a href="http://www.amazon.com/Murachs-ASP-NET-3-5-Programming-2008/dp/1890774472"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="amazon" border="0" alt="amazon" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/amazon_5F00_1286E509.jpg" width="87" height="17" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/BooksMurach_5F00_002_5F00_343079C2.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="BooksMurach_002" border="0" alt="BooksMurach_002" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/fernandezja/BooksMurach_5F00_002_5F00_thumb_5F00_62B65CD7.jpg" width="544" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Enlaces:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Lista de Libros de Murach      &lt;br /&gt;&lt;a href="http://www.murach.com/books/index.htm"&gt;http://www.murach.com/books/index.htm&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=204" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Murach/default.aspx">Murach</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Libros/default.aspx">Libros</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/VB.NET/default.aspx">VB.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Visual+Basic/default.aspx">Visual Basic</category></item><item><title>[ASP.NET] Enviar mail a través de Gmail/Hotmail/Live.com configurando mailSettings en el web.config (nuevo enableSsl="true" en ASP.NET 4.0)</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/10/07/asp-net-enviar-mail-a-trav-233-s-de-gmail-hotmail-live-com-configurando-mailsettings-en-el-web-config-nuevo-enablessl-quot-true-quot-en-asp-net-4-0.aspx</link><pubDate>Thu, 07 Oct 2010 16:07:45 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:202</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=202</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=202</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/10/07/asp-net-enviar-mail-a-trav-233-s-de-gmail-hotmail-live-com-configurando-mailsettings-en-el-web-config-nuevo-enablessl-quot-true-quot-en-asp-net-4-0.aspx#comments</comments><description>&lt;p&gt;Para enviar email a través de los servidores de Google (o Google App) o de desde Hotmail/Live.com es necesario configurar puertos específicos y habilitar SSL.    &lt;br /&gt;Ya nos comentaban como hacerlo por código José Alarcón Aguín&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://geeks.ms/blogs/jalarcon/archive/2007/06/23/c-243-mo-enviar-correo-electr-243-nico-por-c-243-digo-usando-cuentas-de-gmail.aspx" target="_blank"&gt;Cómo enviar correo electrónico por código usando cuentas de GMail&lt;/a&gt; (por &lt;a href="http://geeks.ms/blogs/jalarcon" target="_blank"&gt;José M. Alarcón Aguín&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Como verán era necesario habilitar por codigo SSL con la propiedad &lt;a href="http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.enablessl.aspx" target="_blank"&gt;EnableSsl (del SmptClient)&lt;/a&gt; . “Era” la única manera/forma antes de ASP.NET 4.0...&lt;/p&gt;  &lt;p&gt;Un pedido hacia el equipo de ASP.NET era habilitarlo desde el web.config, y lo tenemos disponible… pueden verlo en el&amp;#160; al pedido en Microsoft Connect&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Include &amp;quot;EnableSSL&amp;quot; option for System.Net.SmtpClient when using configuration file.      &lt;br /&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=281277&amp;amp;wa=wsignin1.0" target="_blank"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=281277&amp;amp;wa=wsignin1.0&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Introducción: Sección &lt;a href="http://msdn.microsoft.com/es-es/library/w355a94k.aspx"&gt;mailSettings&lt;/a&gt; en el web.config &lt;/h3&gt;  &lt;p&gt;Desde ASP.NET 2.0, tenemos una sección de configuración &lt;a href="http://msdn.microsoft.com/es-es/library/w355a94k.aspx" target="_blank"&gt;mailSettings&lt;/a&gt;, donde podremos configurar la &lt;a href="http://msdn.microsoft.com/es-es/library/ms164240.aspx"&gt;sección smtp&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;font face="Courier New"&gt;&amp;lt;system.net&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;mailSettings&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;smtp deliveryMethod=&amp;quot;Network&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;network .... /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/smtp&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/mailSettings&amp;gt;       &lt;br /&gt;&amp;lt;/system.net&amp;gt;&lt;/font&gt;&lt;/blockquote&gt;  &lt;p&gt;En la parte smtp podremos configurar como la &lt;a href="http://msdn.microsoft.com/es-es/library/ms164242.aspx" target="_blank"&gt;sección network&lt;/a&gt; (donde tenemos por medio de atributo de configuración la posibilidad de habilitar SSL)&lt;/p&gt;  &lt;p&gt;Configurando la seccion &lt;a href="http://msdn.microsoft.com/es-es/library/w355a94k.aspx" target="_blank"&gt;mailSettings&lt;/a&gt; podremos enviar directamente sin previa configuración de la instancia de la clase &lt;a href="http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.aspx" target="_blank"&gt;SmtpClient&lt;/a&gt;, … un mensaje de correo:&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;SmtpClient smtpClient = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SmtpClient();
&lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;
{
    smtpClient.Send(emailMsg);
}
&lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (System.Net.Mail.SmtpException ex)
{
      &lt;span style="color:#008000;"&gt;//acciones&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Configurando… con “enableSsl” (nuevo desde ASP.NET 4.0)&lt;/h3&gt;

&lt;p&gt;Podemos incluir &amp;quot;EnableSSL&amp;quot; (que es una opción de la clase &lt;a href="http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.aspx" target="_blank"&gt;System.Net.Mail.SmtpClient&lt;/a&gt;) desde el archivo de configuración (sección &lt;a href="http://msdn.microsoft.com/es-es/library/w355a94k.aspx" target="_blank"&gt;mailSettings&lt;/a&gt;) y allí configurando &lt;a href="http://msdn.microsoft.com/es-es/library/ms164242.aspx" target="_blank"&gt;network&lt;/a&gt; para el envío a través de SMTP. &lt;/p&gt;

&lt;h4&gt;&lt;u&gt;Ejemplo de configuración con Google App&lt;/u&gt;:&lt;/h4&gt;

&lt;div&gt;Datos de servidor SMTP:&lt;/div&gt;

&lt;blockquote&gt;
  &lt;pre&gt;Server SMTP: smtp.gmail.com / Port: 587 / Enable SSL&lt;br /&gt;User: {user}@gmail.com // {user}@tudominio.com (Google App)&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;div&gt;Configuración:&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.net&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;mailSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;smtp&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;deliveryMethod&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Network&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;from&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=username@gmail.com&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;network&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;enableSsl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; 
                &lt;span style="color:#ff0000;"&gt;defaultCredentials&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; 
                &lt;span style="color:#ff0000;"&gt;clientDomain&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;www.tudominio.com&lt;/span&gt;&amp;quot;  
                &lt;span style="color:#ff0000;"&gt;host&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;smtp.gmail.com&amp;quot;&lt;/span&gt; 
                &lt;span style="color:#ff0000;"&gt;port&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;587&amp;quot;&lt;/span&gt; 
                &lt;span style="color:#ff0000;"&gt;userName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;username@tudominio.com&amp;quot;&lt;/span&gt; 
                &lt;span style="color:#ff0000;"&gt;password&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;smtp&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;mailSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;u&gt;&lt;/u&gt;&lt;/div&gt;

&lt;h4&gt;&lt;u&gt;Ejemplo para utilizar Live.com (nuestro Hotmail)&lt;/u&gt;&lt;/h4&gt;

&lt;div&gt;Datos de servidor SMTP:&lt;/div&gt;

&lt;blockquote&gt;
  &lt;pre&gt;Server SMTP: smtp.live.com / Port: 587 / Enable SSL&lt;br /&gt;User: {user}@live.com&lt;br /&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;div&gt;Configuración:&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.net&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;mailSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;smtp&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;deliveryMethod&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Network&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;from&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;usuario@live.com&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;network&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;enableSsl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;defaultCredentials&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;clientDomain&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;www.tudominio.com&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;host&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;smtp.live.com&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;port&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;587&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;userName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;usuario@live.com&amp;quot;&lt;/span&gt;
               &lt;span style="color:#ff0000;"&gt;password&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;smtp&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;mailSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;Puede ver mas info de los atributos de la sección &lt;a href="http://msdn.microsoft.com/es-es/library/ms164242.aspx" target="_blank"&gt;network aquí&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;/div&gt;

&lt;h3&gt;Notas sobre “enableSsl”&lt;/h3&gt;

&lt;p&gt;…from MSDN &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;(…)El atributo enableSsl especifica si se usa SSL para obtener acceso a un servidor de correo SMTP.La clase &lt;a href="http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient.aspx" target="_blank"&gt;System.Net.Mail.SmtpClient&lt;/a&gt; sólo admite la extensión de servicio SMTP para SMTP seguro sobre Seguridad de la capa de transporte como se define en RFC 3207.En este modo, la sesión de SMTP &lt;/p&gt;

  &lt;div&gt;comienza en un canal no cifrado, a continuación, el cliente ejecuta un comando STARTTLS al servidor para intercambiar para proteger la comunicación mediante SSL.Vea RFC 3207 publicada por Internet Engineering Task Force (IETF) para obtener más información.&lt;/div&gt;

  &lt;p&gt;Un método de conexión alternativo es donde una sesión de SSL se establece al frente antes de que se envíe cualquier comando de protocolo. &lt;font color="#ff0000"&gt;Este método de conexión a veces se denomina SMTP/SSL y de manera predeterminada usa el puerto 465.Actualmente no se admite este método de conexión alternativo utilizando SSL&lt;/font&gt;.(…)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Enlaces&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;&lt;strong&gt;mailSettings&lt;/strong&gt;&amp;gt; Elemento de configuración (Network Settings) 

    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/w355a94k.aspx"&gt;http://msdn.microsoft.com/es-es/library/w355a94k.aspx&lt;/a&gt; 

    &lt;ul&gt;
      &lt;li&gt;&amp;lt;&lt;strong&gt;smtp&lt;/strong&gt;&amp;gt; 

        &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms164240.aspx"&gt;http://msdn.microsoft.com/es-es/library/ms164240.aspx&lt;/a&gt; 

        &lt;ul&gt;
          &lt;li&gt;&amp;lt;&lt;strong&gt;network&lt;/strong&gt;&amp;gt; 

            &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms164242.aspx"&gt;http://msdn.microsoft.com/es-es/library/ms164242.aspx&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Complete FAQ for the System.Net.Mail namespace 
    &lt;br /&gt;&lt;a href="http://www.systemnetmail.com/"&gt;http://www.systemnetmail.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=202" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+4.0/default.aspx">ASP.NET 4.0</category></item><item><title>JUTI XI – Presentación: ASP.NET MVC 2 con Entity Framework 4.0 en VS2010</title><link>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/10/04/juti-xi-presentaci-243-n-asp-net-mvc-2-con-entity-framework-4-0-en-vs2010.aspx</link><pubDate>Mon, 04 Oct 2010 20:01:08 GMT</pubDate><guid isPermaLink="false">3ea7d28b-09bb-46d3-a159-3889b059424f:200</guid><dc:creator>Jose A. Fernandez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/rsscomments.aspx?PostID=200</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://team.desarrollosnea.com.ar/blogs/jfernandez/commentapi.aspx?PostID=200</wfw:comment><comments>http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/2010/10/04/juti-xi-presentaci-243-n-asp-net-mvc-2-con-entity-framework-4-0-en-vs2010.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Hace un par de semanas estuvimos con &lt;a href="http://team.desarrollosnea.com.ar/blogs/cdacunda/"&gt;Cristina&lt;/a&gt; presentando en la JUTI algunas características de Entity Framework 4.0 y ASP.NET MVC 2 con Visual Studio 2010. Aquí va el post (que lo tenia en borrador) y la presentación que nos recordó Noelia que no la publicamos aún (así que aquí esta lo que debíamos)&lt;/p&gt;  &lt;p&gt;Esto ya nos comento &lt;a href="http://team.desarrollosnea.com.ar/blogs/dmorales"&gt;Diego&lt;/a&gt;, que presentó con &lt;a href="http://team.desarrollosnea.com.ar/blogs/llomazzi/"&gt;Lautaro&lt;/a&gt; y el invitado especial Rodrigo Eirasca (de &lt;a href="http://www.cgeconsultores.com/"&gt;CGE Consultores de Gestión Empresaria),&lt;/a&gt;&amp;#160; el tema &lt;strong&gt;Certificar Calidad bajo ISO 9001:2008&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://team.desarrollosnea.com.ar/blogs/dmorales/archive/2010/10/01/juti-ix-certificar-sgc-bajo-la-norma-iso-9001-2008-alcance-desarrollo-de-software.aspx"&gt;JUTI XI – Certificar SGC bajo la norma ISO 9001:2008 (Alcance desarrollo de software)&lt;/a&gt; (por &lt;a href="http://team.desarrollosnea.com.ar/blogs/dmorales"&gt;Diego Morales&lt;/a&gt;) &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Este es el 11° año de la &lt;a href="http://www.juti-frre.com.ar/"&gt;JUTI&lt;/a&gt; (Jornadas Universitarias Tecnológicas sobre Informática) que se viene realizando en la &lt;a href="http://www.frre.utn.edu.ar/"&gt;UTN-FRRE&lt;/a&gt; (&lt;a href="http://www2.frre.utn.edu.ar/cincuentenario/"&gt;que este año esta de cincuentenario&lt;/a&gt;) &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.juti-frre.com.ar/"&gt;http://www.juti-frre.com.ar/&lt;/a&gt;      &lt;br /&gt;&lt;em&gt;NOTA: Lástima que la web de la JUTI la utilicen para otros eventos, seria bueno tener un enlace “histórico” para no perder todas las versiones anteriores :(&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Aquí les dejo &lt;a href="http://www.slideshare.net/desarrollosnea/entity-framework-40-y-aspnet-mvc-2-con-vs2010-juti-xi-2010"&gt;el enlace a la presentación&lt;/a&gt;, y de paso la pruebo la incrustación directa :)&lt;/p&gt;  &lt;div style="width:425px;" id="__ss_5355049"&gt;&lt;strong style="margin:12px 0px 4px;display:block;"&gt;&lt;a title="Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010" href="http://www.slideshare.net/desarrollosnea/entity-framework-40-y-aspnet-mvc-2-con-vs2010-juti-xi-2010"&gt;Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010&lt;/a&gt;&lt;/strong&gt;    &lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/desarrollosnea"&gt;Desarrollos NEA&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;
Crossposting desde &lt;a href="http://geeks.ms/blogs/fernandezja" target="_blank"&gt;mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://team.desarrollosnea.com.ar/aggbug.aspx?PostID=200" width="1" height="1"&gt;</description><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/JUTI/default.aspx">JUTI</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://team.desarrollosnea.com.ar/blogs/jfernandez/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item></channel></rss>