{"id":57,"date":"2006-08-12T14:05:49","date_gmt":"2006-08-12T19:05:49","guid":{"rendered":"http:\/\/www.lastdragon.net\/?p=57"},"modified":"2006-08-22T20:46:33","modified_gmt":"2006-08-23T01:46:33","slug":"iniciando-con-aspnet-y-c","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=57","title":{"rendered":"Iniciando con ASP.NET y C#"},"content":{"rendered":"<p>Desde ayer Viernes 11 de Agosto me ha entrado curiosidad por, probar el<br \/>\nASP.NET y es que lo hab\u00eda ignorado ya que ASP 3.0 y anteriores, nunca me<br \/>\ngustaron. Siempre he usado PHP para programaci\u00f3n en WEB<\/p>\n<p>Debo aclarar que no tengo mucha experiencia, (Horas de Vuelo\/Programaci\u00f3n) en<br \/>\nASP 3.0 y anteriores y que nunca he programado en PHP en modo objetos \u201cPOO?? para<br \/>\nmi PHP siempre ha sido un Script lineal y ese el uso que le doy, sin embargo el<br \/>\nASP.NET me obliga a usar lenguajes orientados a objetos y para lo .NET siempre<br \/>\nuso C#, As\u00ed que he comenzado a escribir algunos programas de practica con<br \/>\nASP.NET en lenguaje C#<\/p>\n<p>Mi entorno de trabajo es un servidor GNU\/Linux con Mono y XSP como proveedor de<br \/>\nASP.NET<\/p>\n<p>Lo primero que he notado en ASP.NET es que no tengo que saber mucho de HTML, en<br \/>\nPHP al dar salida a un navegador. Tengo que preocuparme por el formato del mismo<br \/>\nen HTML, por ejemplo<\/p>\n<p>PHP<\/p>\n<p>Echo \u201c&lt;input type=\\??submit\\?? value=\\??Enviar\\??&gt;??;<\/p>\n<p>ASP.NET<\/p>\n<p>&lt;asp:Button id=??nombreobjeto?? Text=??Enviar??\/&gt;<\/p>\n<p>Ambos c\u00f3digos van producir la salida de un bot\u00f3n que indica Enviar, el problema<br \/>\ncon PHP es que el bot\u00f3n se produce por que yo escrib\u00ed el c\u00f3digo HTML y por lo<br \/>\ntanto no sabe que se trata de un bot\u00f3n, Sin embargo en ASP.NET no escrib\u00ed c\u00f3digo<br \/>\nHTML, ASP.NET sabe que se trata de un bot\u00f3n y a la hora de dar salida a la<br \/>\npagina WEB escribir\u00e1 los tags necesario para darle forma a mi bot\u00f3n, \u00f3sea va a<br \/>\nescribir &lt;input type=??submit?? value=??Enviar??&gt;<\/p>\n<p>Hasta este punto, lo que he puesto de ASP.NET no se parece en nada a C#, sin<br \/>\nembargo esa etiqueta ASP.Net equivale a:<\/p>\n<p>Button nombreobjeto = new Button();<\/p>\n<p>As\u00ed que cada etiqueta &lt;asp:tipo&gt; es en realidad una instancia a un objeto que ya<br \/>\nen el c\u00f3digo C# podremos manipular, incluso algunos eventos como el OnClick, Por<br \/>\nlo tanto desde la misma etiqueta podemos acceder a sus m\u00e9todos y a sus eventos.<\/p>\n<p>\nOtra habilidad que he notado del ASP.NET es poder guardar el estado de cada<br \/>\nobjeto y valor de variables sin la intervenci\u00f3n del programador, a la vista del<br \/>\nprogramador esto es similar a programa localmente, ya que en un programa local,<br \/>\nalmacenamos variables y sabemos que mientras el programa este corriendo nuestra<br \/>\nvariable y su valor estar\u00e1 ah\u00ed. <br \/>\nEn PHP esto lo podemos hacer mediante sesiones o pas\u00e1ndonos los valores de cada<br \/>\nvariable por medio de formularios en campos ocultos (hidden), sin embargo en<br \/>\nASP.NET los valores se conservan mientras estemos en la pagina, tal como un<br \/>\nprograma los conserva, mientras esta corriendo en memoria. Por lo tanto ASP.Net<br \/>\nda la sensaci\u00f3n d que nuestro programa C# en el WEB esta corriendo al igual que<br \/>\nun programa en nuestra computadora y hasta que no cerremos la pagina no se<br \/>\nperder\u00e1n los valores de la memoria.<\/p>\n<p>A continuaci\u00f3n voy a escribir un c\u00f3digo de C# en ASP.NET que contara los clicks<br \/>\na un bot\u00f3n y almacenara en memoria los mediante un dropdownlist o en Windows<br \/>\ncombobox, los nombres que entren por un TextBox<\/p>\n<p>&lt;html&gt;<br \/>\n&lt;title&gt;Programando en el WEB con C#&lt;\/title&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;%@ language=&quot;C#&quot; %&gt;<br \/>\n&lt;script runat=&quot;server&quot;&gt;<br \/>\n&nbsp;&nbsp;&nbsp; \/\/ Aqui va el codigo C#<\/p>\n<p>&nbsp;&nbsp;&nbsp; static int contador = 0;<\/p>\n<p>&nbsp;&nbsp;&nbsp; void eventobotonclick (object o, EventArgs e)<br \/>\n&nbsp;&nbsp;&nbsp; {<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ Vengo por el llamado del evento<br \/>\nclick, a darle click al boton<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contador++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l1.Text = &quot;Le has dado Click al boton<br \/>\n&quot;+ contador.ToString() + &quot; Veces&quot;;<\/p>\n<p>&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; void eventoclickagregar (object o, EventArgs e)<br \/>\n&nbsp;&nbsp;&nbsp; {<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/ Se ejecuta cuando el dado click al<br \/>\nboton agregar<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nombre.Text != &quot;Agregar otro<br \/>\nnombre&quot;) <br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\nlista.Items.Add (nombre.Text);<br \/>\nl1.Text = &quot;Agregado: &quot; + nombre.Text;<br \/>\n}<\/p>\n<p>else l1.Text = &quot;Error, Agrega otro nombre&quot;;<\/p>\n<p>nombre.Text = &quot;Agregar otro nombre&quot;;<\/p>\n<p>}<\/p>\n<p>&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<\/p>\n<p>&lt;body&gt;<br \/>\n&lt;center&gt;Texto simple de HTML&lt;br&gt;&lt;asp:Label id=&quot;l1&quot; Text=&quot;Texto del Objeto Label&quot;<br \/>\nrunat=&quot;server&quot;\/&gt;&lt;\/center&gt;<br \/>\n&lt;form runat=&quot;server&quot;&gt;<br \/>\n&lt;p&gt;&lt;asp:Button id=&quot;boton&quot; Text=&quot;Darme Clic&quot; runat=&quot;server&quot; OnClick=&quot;eventobotonclick&quot;\/&gt;&lt;\/p&gt;<br \/>\n&lt;\/form&gt;<\/p>\n<p>&lt;p&gt;<br \/>\n&lt;form runat=&quot;server&quot;&gt;<br \/>\n&lt;asp:TextBox id=&quot;nombre&quot; runat=&quot;server&quot;\/&gt; <br \/>\n&lt;asp:DropDownList id=&quot;lista&quot; runat=&quot;server&quot;\/&gt;<br \/>\n&lt;asp:Button id=&quot;agregar&quot; Text=&quot;Agregar&quot; runat=&quot;server&quot; OnClick=&quot;eventoclickagregar&quot;\/&gt;<br \/>\n&lt;\/form&gt;<br \/>\n&lt;\/p&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<\/p>\n<p>&nbsp;<\/p>\n<p>Salida en el WEB<\/p>\n<p>\n<img loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/aspnet\/objetosaspnet.jpg\" width=\"635\" height=\"267\"\/><\/p>\n<p>\nEl c\u00f3digo HTML autom\u00e1ticamente generado por ASP.NET de este programa es:<\/p>\n<p>&lt;html&gt;<br \/>\n&lt;title&gt;Programando en el WEB con C#&lt;\/title&gt;<br \/>\n&lt;head&gt;<\/p>\n<p>&lt;\/head&gt;<\/p>\n<p>&lt;body&gt;<br \/>\n&lt;center&gt;Texto simple de HTML&lt;br&gt;&lt;span id=&quot;l1&quot;&gt;Le has dado Click al boton 19<br \/>\nVeces&lt;\/span&gt;&lt;\/center&gt;<br \/>\n&lt;form name=&quot;_ctl0&quot; method=&quot;post&quot; action=&quot;objetos.aspx&quot; id=&quot;_ctl0&quot;&gt;<br \/>\n&lt;input type=&quot;hidden&quot; name=&quot;__VIEWSTATE&quot; value=&quot;DA0ADgIFAQUFDgINDQ8BAQRUZXh0ASNMZSBoYXMgZGFkbyBDbGljayBhbCBib3RvbiAxOSBWZWNlcwAAAAANAA4CBQEFAw4CDQ0PAQIAAAETQWdyZWdhciBvdHJvIG5vbWJyZQAAAAANDQAMGhgNU3lzdGVtLlN0cmluZ05tc2NvcmxpYiwgVmVyc2lvbj0xLjAuNTAwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkDAQ9NYXJpYW5vIFZlbnRhamEBD0ZlbGlwZSBDYWxkZXJvbgENQW5kcmVzIE1hbnVlbBoZAwADAgQAAgUAAgYADgEFAAAAAA==&quot;<br \/>\n\/&gt;<\/p>\n<p>&lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;boton&quot; value=&quot;Darme Clic&quot; id=&quot;boton&quot; \/&gt;&lt;\/p&gt;<br \/>\n&lt;\/form&gt;<\/p>\n<p>&lt;p&gt;<br \/>\n&lt;form name=&quot;_ctl1&quot; method=&quot;post&quot; action=&quot;objetos.aspx&quot; id=&quot;_ctl1&quot;&gt;<br \/>\n&lt;input type=&quot;hidden&quot; name=&quot;__VIEWSTATE&quot; value=&quot;DA0ADgIFAQUFDgINDQ8BAQRUZXh0ASNMZSBoYXMgZGFkbyBDbGljayBhbCBib3RvbiAxOSBWZWNlcwAAAAANAA4CBQEFAw4CDQ0PAQIAAAETQWdyZWdhciBvdHJvIG5vbWJyZQAAAAANDQAMGhgNU3lzdGVtLlN0cmluZ05tc2NvcmxpYiwgVmVyc2lvbj0xLjAuNTAwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkDAQ9NYXJpYW5vIFZlbnRhamEBD0ZlbGlwZSBDYWxkZXJvbgENQW5kcmVzIE1hbnVlbBoZAwADAgQAAgUAAgYADgEFAAAAAA==&quot;<br \/>\n\/&gt;<\/p>\n<p>&lt;input id=&quot;nombre&quot; type=&quot;text&quot; value=&quot;Agregar otro nombre&quot; name=&quot;nombre&quot; \/&gt; <br \/>\n&lt;select name=&quot;lista&quot; id=&quot;lista&quot;&gt;<br \/>\n&lt;option selected=&quot;selected&quot; value=&quot;Mariano Ventaja&quot;&gt;Mariano Ventaja&lt;\/option&gt;<br \/>\n&lt;option value=&quot;Felipe Calderon&quot;&gt;Felipe Calderon&lt;\/option&gt;<br \/>\n&lt;option value=&quot;Andres Manuel&quot;&gt;Andres Manuel&lt;\/option&gt;<\/p>\n<p>&lt;\/select&gt;<br \/>\n&lt;input type=&quot;submit&quot; name=&quot;agregar&quot; value=&quot;Agregar&quot; id=&quot;agregar&quot; \/&gt;<br \/>\n&lt;\/form&gt;<br \/>\n&lt;\/p&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<\/p>\n<p>\nTemporalmente el programa lo tendre disponible ONLINE en la direcci\u00f3n:<\/p>\n<p>https:\/\/www.lastdragon.net:8080\/objetos.aspx<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde ayer Viernes 11 de Agosto me ha entrado curiosidad por, probar el ASP.NET y es que lo hab\u00eda ignorado ya que ASP 3.0 y anteriores, nunca me gustaron. Siempre he usado PHP para programaci\u00f3n en WEB Debo aclarar que no tengo mucha experiencia, (Horas de Vuelo\/Programaci\u00f3n) en ASP 3.0 y anteriores y que nunca&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-programacion"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=57"}],"version-history":[{"count":0,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/57\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}