Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
1. El desarrollo de Aplicaciones Web ………………………….. 4
1.1 Arquitectura del Framework de .Net ………………… 4
1.2 Aspectos del Framework ASP .Net ……………………. 4
1.2.1 Características …………………………………………. 4
1.2.1.1 Formularios Web (Web Forms) …. 5
1.2.1.2 Formularios con Master Page ……. 5
1.3 Creación de Formulario bajo Master Page ……….. 7
1.4 Creación de Aplicación Web ASPNet…………………. 7
1.4.1 Controles ASP .Net ………………………………….. 8
1.4.2 Pasos para crear un sitio web …………………. 11
1.4.3 Eventos ……………………………………………………. 15
1.4.4 Controles Label, Button y TextBox ………… 20
1.4.5 Controles RadioButton ……………………………. 21
1.4.6 Controles CheckBox ……………………………….. 23
1.4.7 Controles ListBox ……………………………………. 25
1.4.8 Control DropDownList ……………………………. 27
1.4.9 Ejercicios Propuestos ……………………………… 29
2. Creación, Lectura y escritura de archivos de texto .. 30
2.1 Creación y carga del archivo ……………………………. 30
2.2 Lectura del Archivo de texto …………………………….. 34
2.3 Contador de paginas de visitas ………………………… 35
2.4 Agenda de actividades ……………………………………… 37
2.5 Ejercicios Propuestos ……………………………………….. 41
3. Clases SQLConnection y SQLCommand (ABM) ………. 41
3.1 Definición de la Cadena de Conexión con la BD.. 44
3.2 Altas (Agregar registros a la tabla) ………………….. 44
3.3 Consultas de Registros ……………………………………… 46
3.4 Baja (eliminar registro de la tabla)……………………. 48
3.5 Modificaciones (actualizar un Registro) ……………. 49
3.6 Ejercicio Propuesto ……………………………………………. 51
4. Clase SQLDataSource (ABM)……………………………………. 51
4.1 Altas …………………………………………………………………… 52
4.2 Conexión con la Base de Datos ……………………….. 53
4.3 Consultas ………………………………………………………….. 58
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Mapa Conceptual
Desarrollo de aplicaciones web con Asp
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
INTRODUCCIÓN
Microsoft Visual Studio .NET es una plataforma que permite ejecutar y desarrollar
aplicaciones, soluciones informáticas y/o sistemas de información, brindando
todas las herramientas y servicios necesarios para desa- rrollar modernas
aplicaciones empresariales, dentro de una de estas se encuentran las páginas
web; las cuales pueden desarrollarse por medio de WebForms.
1.2.1 Características
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Las páginas incluyen bloques de etiquetas <% -- código dinámico -- %> que
albergan el código dinámico que se ejecuta en el servidor. Otras tecnologías de
desarrollo web como PHP, JSP y ASP, también manejan el mismo concepto de
etiquetas.
ASP.NET sólo funciona sobre el servidor de Microsoft IIS (Internet Infor- mation
Server), lo cual limita su implementación y lo pone en desventaja respecto a
otros lenguajes como PHP o JSP que tienen diferentes alter- nativas de
servidores web.
Los formularios Web Forms se crean bajo la opción (WebForms) y también con el
uso de plantillas (MasterPage) bajo la opción (Formularios Web Forms que Usan
Pagina Maestra).
Bajo cualquiera de estas dos opciones un Formulario Web está compuesto de:
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Una vez creada la Master Page, se pueden crear los Formularios Web bajo el
utilizando la (Master Page) determinada, las cuales tienen un diseño de interfaz
grafico adecuado para el proyecto a desarrollar, que incluye logos, fotos,
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
La página Maestra por defecto que utiliza Microsoft Visual Studio .Net es la
siguiente:
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Cuando se crea una plantilla por defecto esta se crea en blanco, de tal manera
que usted debe adicionarle todos los componentes necesarios para generar su
propio diseño.
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Estos controles son objetos de páginas web AspNet similares a los elementos
html tales como botones y cuadros de texto, controles de calendarios, para
conectar a orígenes de datos.
Existen tres tipos de controles predefinidos que se pueden utilizar en las
páginas ASP.NET:
Controles html
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Controles AspNet.
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Controles de Validación
1.4.2 Pasos para crear un sitio web ASP.Net con el Visual Studio
2012 con C#
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para crear un sitio web debemos seleccionar desde el entorno del Visual Studio
2015: Archivo ->Nuevo sitio web:
Ahora tenemos nuestro primer sitio web vacío, solo se ha creado un archivo de
configuración llamado Web.config:
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Creemos nuestra primer "Web Form" para esto debemos presionar el botón
derecho del mouse donde aparece el nombre de nuestra aplicación "ejercicio001"
y en este menú seleccionar Agregar -> Agregar nuevo elemento...:
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Otro archivo que veremos más adelante y que se crea en forma automático es el
Web.config.
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
El Visual Studio 2015 instala un servidor web propio que está escuchando en un
puerto desocupado. Luego de cerrar la ventana del navegador debemos detener
la depuración de nuestra aplicación para poder modificarla
1.4.3 Eventos
Modificaremos ahora nuestra aplicación para que muestre la fecha del servidor
en una Label. Cuando desde el navegador solicitamos una página aspx lo primero
que se ejecuta es el evento Page_Load. Para poder definir un método para dicho
evento hacemos doble clic sobre el WebForm con lo que inmediatamente se abre
el archivo Default.aspx.cs donde tenemos dicho método:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
Luego codificamos dentro del método Page_Load el algoritmo que muestra la
fecha actual del servidor:
1
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Para ver como funciona la clase Button cerraremos nuestro primer sitio web y
procederemos a crearemos otros. Para cerrar el sitio actual desde el menú de
opciones elegimos Archivo -> Cerrar Solución:
1
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Ahora damos los mismos pasos que hicimos para crear el sitio ejercicio001 pero
lo llamamos ejercicio002 (almacenarlo en la carpeta c:\
ASPNetEjemplos\ejercicio002):
1
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
La forma más sencilla de generar dicho evento es hacer doble clic sobre el objeto
Button. Otra forma es seleccionar dicho objeto (Button) y en la ventana de
propiedades seleccionamos el ícono del "rayo" y hacer doble clic sobre el evento
Click:
1
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
2
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Hasta ahora hemos utilizado los controles de tipo Label y Button, ahora
utilizaremos el control TextBox. Crearemos una aplicación que nos permita
ingresar dos números y luego en una Label muestre la suma de los mismos.
Los textos "Ingrese primer valor:" e "Ingrese segundo valor:" los escribimos
directamente en cambio el Button, los dos TextBox y la Label las arrastramos
desde el Cuadro de herramientas.
Luego codificamos el evento click del objeto de la clase Button (en este evento
debemos extraer el contenido de los dos controles de tipo TextBox y proceder a
convertirlos a tipo de dato entero y sumarlos):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
2
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Web.UI.WebControls;
2
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
if (RadioButton1.Checked)
{
resultado = x1 + x2;
Label1.Text = "La suma de los dos valores es:" + resultado;
}
else
{
resultado = x1 - x2;
Label1.Text = "La diferencia de los dos valores es:" + resultado;
}
}
}
2
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Los controles CheckBox permiten que más de uno sea seleccionado. Similar a los
controles RadioButton tiene dos estados (seleccionado o no seleccionado) y esto
lo sabemos según el estado de la propiedad Checked.
Codificaremos un nuevo sitio web llamado ejercicio005 que permita cargar dos
valores y luego calcule la suma y/o resta de los valores ingresados. Como
podemos seleccionar ambas operaciones utilizaremos los controles de tipo
CheckBox.
2
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
2
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
La propiedad Item permite definir los miembros de la lista (cada item define las
propiedades Text (valor a mostrar), Value (valor a retornar en caso de estar
seleccionado), Selected (con un valor lógico))
2
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
2
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
if (ListBox1.Items[0].Selected)
2
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
2
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
else
if (DropDownList1.Items[2].Selected)
{
int multi = x1 * x2;
Label1.Text = "El producto:" + multi + "<br>";
}
else
if (DropDownList1.Items[3].Selected)
{
int divi = x1 / x2;
Label1.Text = "La division:" + divi + "<br>";
}
}
}
3
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Response.Redirect("http://www.google.com.ar");
En una Label mostrar los datos cargados en cada control (disponer la Label al
final del formulario) Hacer por lo menos 5 validaciones y mostrar mensajes
de errores en una Label.
3
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Crear un sitio web llamado ejercicio008 y luego agregar tres web form
(Default.aspx, carga.aspx y listado.aspx), en la página principal (Default.axpx)
dispondremos de dos hipervínculos (HyperLink) que sacamos del Cuadro de
herramientas, el primero irá al formulario de carga y el segundo al listado del
contenido del archivo.
La página Default.aspx:
Para los controles HyperLink debemos inicializar las propiedades Text con el
mensaje a mostrar en el hipervínculo y mediante la propiedad NavigateUrl
indicamos a que página se llama al ser presionado:
3
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
El primer control HyperLink nos lleva al formulario web que permite cargar el
nombre del visitante, su país y los comentarios.
3
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
3
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
arch.WriteLine("<br>");
arch.WriteLine("Pais:" + TextBox2.Text);
arch.WriteLine("<br>");
arch.WriteLine("Comentarios<br>");
arch.WriteLine(TextBox3.Text);
arch.WriteLine("<br>");
arch.WriteLine("<hr>");
arch.Close();
Label1.Text = "Datos Registrados";
}
}
using System.IO;
Para obtener el directorio actual utilizamos el método MapPath del objeto Server:
arch.WriteLine("Nombre:" + TextBox1.Text);
arch.WriteLine("<br>");
arch.WriteLine("Pais:" + TextBox2.Text);
arch.WriteLine("<br>");
arch.WriteLine("Comentarios<br>");
arch.WriteLine(TextBox3.Text);
arch.WriteLine("<br>");
arch.WriteLine("<hr>");
arch.Close();
3
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
El archivo de texto almacena los datos de los visitantes y las elementos HTML
básicas para hacer los saltos de línea y líneas separadoras entre comentarios,
solo nos queda leer el archivo e ir almacenándolo en la Label para que lo
muestre.
Podemos disponer un control de tipo HyperLink para retornar a la página
principal.
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
3
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Label1.Text = arch.ReadToEnd();
arch.Close();
Crear un nuevo sitio web llamado ejercicio009 y crear un único web form llamado
Default.aspx.
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
3
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
if (File.Exists(Server.MapPath(".") + "/contador.txt"))
3
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
3
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
4
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Calendar1.SelectedDate.Month.ToString() +
Calendar1.SelectedDate.Year.ToString();
StreamWriter arch = new StreamWriter(Server.MapPath(".") + "/" + fecha, true);
arch.WriteLine(TextBox1.Text);
arch.Close();
}
4
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Calendar1.SelectedDate.Month.ToString() +
Calendar1.SelectedDate.Year.ToString();
StreamWriter arch = new StreamWriter(Server.MapPath(".") + "/" + fecha, true);
arch.WriteLine(TextBox1.Text);
arch.Close();
}
4
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1.- Confeccionar un sitio que permita ingresar los datos del curriculum de una
persona y almacenarlos en un archivo de texto.
Nosotros trabajaremos con el gestor de base de datos SQL Server por ser el más
empleado cuando se utiliza la tecnología de ASP.Net en el desarrollo de sitios
web dinámicos.
4
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para crear la base de datos podemos hacerlo desde el Microsoft SQL Server
Management Studio:
4
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
consulta.aspx
baja.aspx
modificacion.aspx
La página Default.aspx solo tendrá los hipervínculos a las otras páginas que
tendrán por objetivo efectuar una el alta de usuarios, otra la consulta, otra la
baja y la última la modificación:
4
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para crear esta interfaz insertaremos cuatro objetos de la clase HyperLink, como
mínimo debemos inicializar las propiedades text (es el texto que mostrará el
hipervínculo en el navegador y la propiedad NavigateUrl que indica el nombre de
la página que debe cargar el navegador cuando se presione el hipervínculo)
<!-- Para obtener más información sobre cómo configurar la aplicación de ASP.NET, visite
http://go.microsoft.com/fwlink/?LinkId=169433 -->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
<connectionStrings>
<add name="cadenaconexion1"
connectionString="Data Source=DIEGO-PC\SQLEXPRESS;Initial Catalog=base1;Integrated
Security=true;"/>
</connectionStrings>
</configuration>
4
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Como podemos ver disponemos tres controles de tipo TextBox, el que solicita el
ingreso de la clave modificamos la propiedad TextMode con el valor Password,
los otros dos los dejamos con el valor SingleLine.
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
4
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
string s =
System.Configuration.ConfigurationManager.ConnectionStrings["cadenaconexion1"].ConnectionStrin
g;
SqlConnection conexion = new SqlConnection(s);
conexion.Open();
SqlCommand comando = new SqlCommand("insert into usuarios(nombre,clave,mail) values('" +
TextBox1.Text + "','" + this.TextBox2.Text + "','" +
TextBox3.Text + "')", conexion);
comando.ExecuteNonQuery();
Label1.Text = "Se registro el usuario";
conexion.Close();
}
}
using System.Data.SqlClient;
string s =
System.Configuration.ConfigurationManager.ConnectionStrings["cadenaconexion1"].ConnectionStrin
g;
Abrimos la conexión:
conexion.Open();
Creamos un objeto de la clase SqlCommand creándolo con los datos cargados en los
controles TextBox:
SqlCommand comando = new SqlCommand("insert into usuarios(nombre,clave,mail) values('" +
TextBox1.Text + "','" + this.TextBox2.Text + "','" + TextBox3.Text + "')", conexion);
comando.ExecuteNonQuery();
Cerramos la conexión:
conexion.Close();
4
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
4
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
5
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
5
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Luego el código para los eventos clic de los dos botones es:
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
5
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Ejercicio Propuesto
Cedula varchar(10),
apellidonom varchar(50),
provincia varchar(30)
Veremos otra forma de implementar el acceso a Sql Server utilizando una serie
de clases que nos facilitan codificar los comandos SQL mediante diálogos
administrados por el Visual Studio.
5
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Default.asxp
alta.aspx
consulta.aspx
baja.aspx
modificacion.aspx
La primera página solo tendrá los hipervínculos a otras páginas que tendrán por
objetivo efectuar una el alta de usuarios, otra la baja, otra las modificaciones y
por último otra la consulta:
Para crear esta interfaz insertaremos cuatro objetos de la clase HyperLink, como
mínimo debemos inicializar las propiedades Text (es el texto que mostrará el
hipervínculo en el navegador y la propiedad NavigateUrl que indica el nombre de
la página que debe cargar el navegador cuando se presione el hipervínculo)
4.1. Altas
Activemos desde el Visual Studio la pestaña alta.aspx para elaborar la interfaz
visual que nos permita efectuar la carga de datos de usuarios:
5
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Como podemos ver disponemos tres controles de tipo TextBox, el que solicita el
ingreso de la clave modificamos la propiedad TextMode con el valor Password,
los otros dos los dejamos con el valor SingleLine.
Ahora veremos como crear una conexión con nuestra base de datos que hemos
creado desde SQL Server, seleccionamos desde el menú del Visual Studio el
"Explorador de servidores"
5
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
5
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Desde el explorador de servidores se puede ver las tablas, campos de una tabla
e inclusive si presionamos el botón derecho del mouse sobre la tabla usuarios
podemos ver los datos de la misma.
5
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Ahora nos queda configura la propiedad InsertQuery con el comando SQL que
nos permite insertar un registro en una tabla.
5
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
5
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Lo que no hay que olvidarse nunca es que cada vez que agregamos o borramos
un parámetro de nuestro comando SQL es presionar el botón Actualizar
parámetros.
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
6
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
TextBox3.Text = "";
}
}
Al presionar el botón inicializamos los tres parámetros del comando SQL que
hemos configurado en el SqlDataSource. Para acceder a dichos parámetros
disponemos de la propiedad InsertParameters que le indicamos como subíndice
el nombre del parámetro.
Como vemos es mucho más limpio que crear directamente aquí el comando SQL
como vimos en el concepto anterior.
4.3. Consultas
6
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
6
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
SqlDataReader datos;
datos = (SqlDataReader)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
if (datos.Read())
Label1.Text = "Clave:" + datos["clave"] + "<br>Mail:" + datos["mail"];
else
Label1.Text = "No existe un usuario con dicho nombre";
}
}
Luego recorremos el SqlDataReader (como este caso puede retornar cero o una
fila lo hacemos mediante un if:
if (datos.Read())
Si el método Read retorna true luego podemos acceder a la fila recuperada con el
select.
4.4. Bajas
6
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
6
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
4.5. Modificaciones
Por último, implementaremos la modificación de datos. Seleccionamos del
Explorador de soluciones la página modificacion.aspx y procedemos a elaborar la
siguiente interfaz visual:
6
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
SqlDataSource1.SelectParameters["nombre"].DefaultValue = TextBox1.Text;
SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader;
SqlDataReader datos;
datos = (SqlDataReader)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
if (datos.Read())
{
TextBox2.Text = datos["clave"].ToString();
TextBox3.Text = datos["email"].ToString();
}
else
Label1.Text = "No existe un usuario con dicho nombre";
}
6
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
6
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
La primera página Default.aspx solo tendrá los hipervínculos a otras páginas que
tendrán por objetivo efectuar una el alta de rubros, alta de articulos, otra la baja
de articulos, otra las modificaciones de articulos y por último otra la consulta de
articulos.
Para crear esta interfaz insertaremos cinco objetos de la clase HyperLink, como
mínimo debemos inicializar las propiedades Text (es el texto que mostrará el
hipervínculo en el navegador y la propiedad NavigateUrl que indica el nombre de
la página que debe cargar el navegador cuando se presione el hipervínculo)
6
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Alta de rubros
6
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
7
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Alta de artículos
7
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Este primer SqlDataSource nos permitirá rescatar los datos de los rubros (codigo
y descripción) y poblar el control DropDownList.
Ahora nos queda configura la propiedad SelectQuery con el comando SQL que
nos permite recuperar todas las filas de la tabla rubros.
7
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
7
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
7
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Ahora ya hemos dado todos los pasos para configurar el alto de artículos,
debemos implementar el evento clic del botón de alta:
7
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Consultas de artículos
7
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
7
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
Luego recorremos el SqlDataReader (como este caso puede retornar cero o una
fila lo hacemos mediante un if):
if (registros.Read())
Si el método Read retorna true luego podemos acceder a la fila recuperada con el
select:
Label1.Text = "Descripcion:" +
registros["descriarticulo"] + "<br>" +
"Precio:" + registros["precio"] + "<br>" +
7
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
"Rubro:" + registros["descrirubro"];
Bajas de artículos
using System.Linq;
using System.Web;
7
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Web.UI;
using System.Web.UI.WebControls;
Modificaciones de artículos.
8
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
- ConnectionString.
- SelectQuery
select descriocion,precio,codigorubro from articulos
where codigo=@codigo:
- UpdateQuery
update articulos set descripcion=@descripcion,
precio=@precio,
codigorubro=@codigorubro
where codigo=@codigo
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
8
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
TextBox2.Text = registros["descripcion"].ToString();
TextBox3.Text = registros["precio"].ToString();
DropDownList1.SelectedValue = registros["codigorubro"].ToString();
DropDownList1.DataSource = SqlDataSourceRubros;
DropDownList1.DataTextField = "descripcion";
DropDownList1.DataValueField = "codigo";
DropDownList1.DataBind();
}
else
Label1.Text = "No existe un artículo con dicho código";
}
6. Control GridView
Conceptos.
El control GridView del ASP.Net permite visualizar datos en una tabla en pantalla,
editar, modificar y borrar registros del mismo.
El GridView es el control más poderoso que provee el ASP.Net. Veremos que este
control trae funcionalidades ya implementadas para paginación, ordenamiento y
edición de sus datos.
8
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
8
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Como podemos ver hasta este momento la herramienta Visual Studio .Net nos ha
configurado en forma automática el control SqlDataSource1, solo nos queda
configurar el control GridView1.
8
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Sin escribir una sola línea de código tenemos el mantenimiento de la tabla rubros
(con la excepción del alta)
8
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Veamos otras características que podemos configurar en forma visual del control
GridView. Desde el botón “>” que se encuentra en la parte superior derecha del
control GridView1 podemos seleccionar la opción Formato Automático... para
definir la presentación de la tabla con plantillas predefinidas de color y fuente:
6.2. Datos de
varias tablas
Tabla: articulos
codigo int Clave
primaria e
identidad.
descripcion
varchar(50)
precio float
8
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
codigorubro int
Tabla: rubros
codigo int Clave primaria e identidad
descripcion varchar(50)
SELECT ar.codigo,
ar.descripcion as descriarticulo,
precio,
ru.descripcion as descrirubro
from articulos as ar
join rubros as ru on ru.codigo=ar.codigorubro
8
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
8
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Cambiemos los títulos de las columnas de cada campo (por ejemplo, en el campo
descriarticulo mostraremos el título Descripción del Art. Modificando la
propiedad HeaderText.
c) La
propiedad
Visible de cada columna nos permite configurar si la columna se muestra o no.
d) La propiedad DataFormatString nos permite configurar la apariencia de
números y fechas. Por ejemplo, si queremos que el precio aparezca con el
símbolo de moneda debemos configurar la propiedad DataFormatString con el
valor:
{0:C}
8
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
A modo de ejemplo mostraremos de color amarillo las filas de los artículos con
precio superior a 8. Para esto codificamos el evento RowDataBound del
GridView1:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
9
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
double precio;
precio = (double)DataBinder.Eval(e.Row.DataItem, "precio");
if (precio > 8)
{
e.Row.ForeColor = System.Drawing.Color.Red;
e.Row.BackColor = System.Drawing.Color.Yellow;
e.Row.Font.Bold = true;
}
}
}
}
Con el if verificamos si el evento se disparó para una fila de datos de la grilla (ya
que este método se dispara cuando dibuja la cabecera
(DataControlRowType.Header), el pié de grilla (DataControlRowType.Footer) etc.
9
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
El objeto Rows del GridView almacena una colección de filas, mediante el valor
devuelto por la propiedad SelectedIndex de la grilla podemos acceder a la celda
que almacena el código del artículo.
Esta información nos es muy útil para mostrar información adicional sobre el
registro en otro control, por ejemplo.
7. CONTROLES DE VALIDACIÓN
Conceptos.
Introducción
Hay seis controles Web para la validación de datos de entrada que se pueden
incorporar en un Formulario Web.
9
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Por último, la propiedad IsValid almacena True en caso que el control pase el test
de validación.
Sitio Web
Crearemos un sitio web y lo llamaremos "ejercicio016". Luego agregaremos seis
WebForm con los siguientes nombres:
Default.aspx
Default2.aspx
Default3.aspx
Default4.aspx
9
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Default5.aspx
Default6.aspx
Otra cosa que necesitamos hacer con ASP.Net 4.5 en adelante si no utilizamos
JQuery es hacer la siguiente configuración en el archivo Web.config:
<!--
Para obtener más información sobre cómo configurar la aplicación de ASP.NET, visite
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
</configuration>
Controles de validación
7.1. Control: RequiredFieldValidator
Para probar este control haremos una página que solicite el nombre de usuario
(mostraremos un error si el operador no ingresa texto en el TextBox)
9
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
9
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Cuando ejecutemos la página podemos ver el código que llega al navegador (en
ella veremos las funciones en JavaScript que automáticamente el ASP.NET nos
crea para facilitar la validación)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
9
6
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para probar este control haremos una página que solicite ingresar la edad de una
persona que se postula para un trabajo (la misma debe estar en el rango de 18 a
35 años)
El objeto
using System.Linq;
using System.Web;
using System.Web.UI;
9
7
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Web.UI.WebControls;
9
8
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para probar este control implementaremos una página que realizaría el alta de la
tabla usuarios (debe permitir el ingreso del nombre de usuario y su clave, esta
última dos veces, con el objetivo de asegurarse que la ingresó correctamente),
emplearemos un objeto de la clase CompareValidator para validar el ingreso
repetido de la clave.
9
9
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Para probar este control implementaremos una página que solicite el ingreso de
un número múltiplo de 5, en caso de ingresar un valor incorrecto mostraremos
un mensaje de error.
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para probar este control, haremos una página que solicite el ingreso de un mail y
mostraremos un error en caso que el usuario ingrese un mail mal formado.
La interfaz visual de la página es la siguiente:
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para probar este control haremos una página que solicite la carga del nombre de
usuario y su clave en forma obligatoria (mostrando un mensaje de error en caso
de dejar vacío los TextBox)
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Conceptos.
Una actividad muy común en un sitio web es el envío de archivos desde el cliente
y su almacenamiento el el servidor.
8.1. Upload
Componente FileUpload
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Confeccionaremos una serie de páginas web para aprender a utilizar los métodos
y propiedades de la clase FileUpload (Crear un sitio web llamado ejercicio017)
Crear un webform (Default.aspx) e implementar la siguiente interfaz:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Con esta única línea tenemos registrado en el servidor el archivo que se envió
desde el navegador.
Es una buena costumbre evitar almacenar los archivos que suben los usuarios en
la misma carpeta donde se encuentran las páginas dinámicas ASPX.
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
El tamaño del archivo nos puede ser útil si queremos limitar el peso del mismo.
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Ejercicio Resuelto
En la base de datos 'base1' crear las tablas:
1
0
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Desde el Visual Studio .Net proceder a crear un sitio web vacío (ejercicio018) y
agregar el primer Web Form que contendrá el menú de opciones para efectuar:
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Punto a
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Punto b
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para el evento click del alta procedemos a inicializar los parámetros y a efectuar
el insert en la tabla autos.
Además, hacemos el upload del archivo de la foto con el objetivo de que la foto
quede almacenada en forma permanente en el servidor:
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class altaautos : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
FileUpload1.SaveAs(Server.MapPath(".") + "/" + FileUpload1.FileName);
dsautos.InsertParameters["patente"].DefaultValue = TextBox1.Text;
dsautos.InsertParameters["propietario"].DefaultValue = TextBox2.Text;
dsautos.InsertParameters["precio"].DefaultValue = TextBox3.Text;
dsautos.InsertParameters["modelo"].DefaultValue = TextBox4.Text;
dsautos.InsertParameters["codigomarca"].DefaultValue = DropDownList1.SelectedValue;
dsautos.InsertParameters["foto"].DefaultValue = FileUpload1.FileName;
dsautos.Insert();
Label1.Text = "Los datos fueron cargados";
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
}
}
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Punto c
using System.Linq;
using System.Web;
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Web.UI;
using System.Web.UI.WebControls;
Punto d
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Por otro lado, configuramos el origen de datos del DropDownList1 para que se
muestren todas las marcas y podamos posteriormente recuperar el código de la
marca seleccionada.
Luego cuando se presiona el botón "Mostrar" debemos recuperar todas las fotos
de autos que pertenecen a la marca seleccionada:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Como podemos ver debemos generar los elementos HTML img con cada una de
las fotos (no podemos utilizar un objeto Image ya que puede haber varios autos
que pertenecen a la misma marca)
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Punto e
1
1
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
siguiente consulta:
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Punto f
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Creamos un Web Form llamado "consultarango.aspx" con una interfaz similar a:c
Para el evento click del botón procedemos a mostrar todas las fotos de autos
cuyos modelos se encuentran comprendidos entre los dos valores ingresados:
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
dsautos.SelectParameters["modelo1"].DefaultValue = TextBox1.Text;
dsautos.SelectParameters["modelo2"].DefaultValue = TextBox2.Text;
dsautos.DataSourceMode = SqlDataSourceMode.DataReader;
SqlDataReader registros = (SqlDataReader)dsautos.Select(DataSourceSelectArguments.Empty);
Label1.Text = "";
while (registros.Read() == true)
{
Label1.Text = Label1.Text + "<img src=\"" +
registros["foto"] + "\"><br><br>";
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
}
}
}
Ejercicio propuesto
9. Cookies y Sesion.
Conceptos.
Introducción.
9.1. Cookies
El protocolo http es un protocolo desconectado. El protocolo http por si mismo no
provee al servidor Web si dos peticiones provienen del mismo navegador. Desde
este punto de vista, para el Servidor Web cada petición de página proviene de un
nuevo usuario. Esta característica puede ser un inconveniente para ciertos sitios
Web.
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Las Cookies son pequeñas piezas de información que el servidor solicita que el
navegador las registre en el equipo del cliente. De acuerdo a la especificación
original de Netscape una cookie no puede contener más de 4 Kb (el tamaño se
refiere a la combinación del nombre y valor de la cookie)
Para el evento Clic del botón "Crear cookie" escribimos el siguiente código:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
La segunda página tiene por objetivo recuperar la cookie en caso que se haya
creado previamente, la interfaz y código de la misma es:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Luego codificamos para el evento clic del botón y para el evento Page_Load:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Como podemos ver una cookie es muy útil si queremos almacenar datos de
configuración de un sitio para cada visitante.
Las variables de sesión son almacenadas durante el tiempo que el usuario visita
el sitio Web.
Session.Timeout = 10;
Para ilustrar el uso de variables de sesión haremos una serie de páginas donde
en la primera ingresaremos el nombre de usuario y clave, en la segunda los
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Default4.aspx:
Esta página solicita la carga de los dos datos y redirecciona a la segunda página,
la interfaz visual es la siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Default5.aspx:
Tiene por objetivo mostrar los contenidos de las dos variables de sesión.
Además, hay un hipervínculo (objeto de la clase HyperLink) que llama a la
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
siguiente página.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Default6.aspx:
Por último, esta tercera página tiene por objetivo mostrar nuevamente el
contenido de las variables de sesión.
La interfaz es:
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
Ejercicio propuesto
1. Confeccionar un sitio que muestre noticias Deportivas, Políticas y Culturales.
Mediante una página de configuración permitir que un visitante pueda
especificar que tipo de noticias quiere ver en la portada del sitio (emplear tres
cookies)
Conceptos.
Introducción
1
2
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Cuando debemos generar imágenes a partir de datos que se extraen de una base
de datos o datos ingresados desde el navegador debemos construir la imagen en
dicho momento.
Para crear una imagen en forma dinámica debemos seguir una serie de pasos:
ContentType="image/gif"
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//Importamos el espacio de nombre que declara la clase Bitmap, Graphics, Font y SolidBrush
using System.Drawing;
//Importamos el espacio de nombre que declara la clase ImageFormat
using System.Drawing.Imaging;
public partial class holamundo : System.Web.UI.Page
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
{
protected void Page_Load(object sender, EventArgs e)
{
//Creamos un objeto de la clase Bitmap
Bitmap mapabit = new Bitmap(500, 300);
Graphics lienzo;
//Iicializamos la variable de tipo Graphics con el bitmap creado
lienzo = Graphics.FromImage(mapabit);
//Creamos una fuente
Font fuente1 = new Font("Arial", 40);
//Creamos un pincel
SolidBrush pincel1 = new SolidBrush(Color.Red);
//Graficamos dentro de la imagen
lienzo.DrawString("Hola Mundo", fuente1, pincel1, 10, 10);
//Enviamos la imagen al navegador que la solicitó
mapabit.Save(Response.OutputStream, ImageFormat.Gif);
}
}
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<img src="holamundo.aspx" alt="prueba de imagen dinámica" />
</div>
</form>
</body>
</html>
Es decir que con el elemento HTML img indicamos en la propiedad src el nombre
del archivo que genera la imagen.
<!DOCTYPE html>
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Drawing;
using System.Drawing.Imaging;
int nro;
Random r = new Random();
nro = r.Next(1, 10000);
Session["codigo"] = nro.ToString();
mapabit.Save(Response.OutputStream, ImageFormat.Gif);
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
}
else
{
Label1.Text = "Incorrecto";
}
}
}
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Y el código que debemos implementar para el evento Click del objeto Button es:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
3
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
El código que debemos implementar para el evento Click del objeto Button es:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
}
}
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
{
protected void Page_Load(object sender, EventArgs e)
{
Bitmap mapabit = new Bitmap(800, 400);
Graphics lienzo;
lienzo = Graphics.FromImage(mapabit);
float valor1 = float.Parse(this.Request.QueryString["v1"]);
float valor2 = float.Parse(this.Request.QueryString["v2"]);
float valor3 = float.Parse(this.Request.QueryString["v3"]);
float mayor = this.RetornarMayor(valor1, valor2, valor3);
float largo1 = valor1 / mayor * 400;
SolidBrush pincel1 = new SolidBrush(Color.Red);
lienzo.FillRectangle(pincel1, 50, 50, 50 + largo1, 80);
float largo2 = valor2 / mayor * 400;
SolidBrush pincel2 = new SolidBrush(Color.Green);
lienzo.FillRectangle(pincel2, 50, 150, 50 + largo2, 80);
float largo3 = valor3 / mayor * 400;
SolidBrush pincel3 = new SolidBrush(Color.Blue);
lienzo.FillRectangle(pincel3, 50, 250, 50 + largo3, 80);
//Cantidades
SolidBrush pincel4 = new SolidBrush(Color.Black);
Font fuente1 = new Font("Arial", 30);
lienzo.DrawString(valor1.ToString(), fuente1, pincel4, 60, 80);
lienzo.DrawString(valor2.ToString(), fuente1, pincel4, 60, 160);
lienzo.DrawString(valor3.ToString(), fuente1, pincel4, 60, 260);
mapabit.Save(Response.OutputStream, ImageFormat.Gif);
}
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
return x3;
}
Ejercicios propuestos
1. Confeccionar un gráfico dinámico que genere un gráfico de barras
verticales.
2. Confeccionar un gráfico dinámico que genere una barra porcentual
(mostrar los porcentajes que les corresponde a cada trozo fuera de la
barra)
3. Generar una imagen a partir de otra y agregarle un texto en forma
dinámica. En algunos casos cuando se quiere proteger la propiedad de
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
11.Master Page
Conceptos.
Introducción
Una Master Page o Página Principal es una estructura base para un conjunto de
páginas pertenecientes a un mismo sitio Web. Este esqueleto base se almacena
en un archivo independiente y luego es heredado por otras páginas que
requieren esa estructura base.
Problema 1
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
</asp:ContentPlaceHolder>
<h3>Copyright 2015</h3>
</div>
</form>
</body>
</html>
Luego veremos que todas las páginas que hereden de esta mostrarán los tres
hipervínculos en la parte superior y el mensaje de Copyright en la parte inferior.
c. Agregar un Web Forms que herede del Master Page que hemos creado. En la
ventana del Explorador de soluciones presionamos el botón derecho del mouse
y seleccionamos Agregar nuevo elemento y seleccionamos Web Forms. Es
importantísimo ahora seleccionar el checkbox “Seleccionar la página
maestra”, también podemos cambiar el nombre por defecto de la página
(podemos llamarla Default.aspx):
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
</asp:Content>
d - De igual forma creamos las otras páginas (Default2.aspx y Default3.aspx):
Default2.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master"
AutoEventWireup="true"
CodeFile="Default2.aspx.cs" Inherits="Default2" %>
</asp:Content>
Default3.aspx:
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Introducción
Hasta ahora, hemos aprendido a crear páginas web que utilizan el modelo
postback. Con el postback, las páginas están perpetuamente reenviándose al
servidor web y regenerándose.
Como desventaja del modelo postback tenemos que hay un parpadeo del
contenido de la página cuando tiene que refrescarse. Además, se tiene el
problema que se reenvían todos los datos al servidor.
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Veremos como ASP.Net nos esconde la complejidad de Ajax y nos permite una
fácil transición entre aplicaciones web tradicionales y el nuevo modelo.
1
4
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
página con Ajax. Por supuesto, usted no obtendrá el máximo control para
personalizar hasta el último detalle de su página, pero usted recibirá una gran
funcionalidad con un mínimo de esfuerzo.
Cada página que utiliza ASP.NET AJAX requiere solo una instancia de la clase
ScriptManager, indistintamente la cantidad de regiones que vallamos a actualizar
posteriormente.
1
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Disponemos en vista de código las marcas HTML que nos provee el sitio
youtube.com para insertar en nuestra página el video. Luego la página Default
en vista de código queda:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<iframe width="420" height="315" src="https://www.youtube.com/embed/OE8WzYNRPNU"
frameborder="0" allowfullscreen></iframe>
</div>
</form>
</body>
</html>
1
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "1 - Muy buen video. <br> 2 - Correcto. <br>3 - De lo mejor.";
}
}
1
5
ASP.NET en C# con Visual Studio 2015
Diseño y desarrollo de aplicaciones Web
Para el evento click del botón realizamos el mismo código hecho para la página
anterior:
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
La idea básica es dividir su página web en una o más regiones distintas, cada
una de las que se envuelve dentro de un UpdatePanel invisibles en tiempo de
ejecución. Cuando un evento ocurre en un control que se ubicado dentro de un
UpdatePanel, y este evento normalmente desencadena una página completa
postback, el UpdatePanel intercepta el evento y realiza una llamada asincrónica.
Aquí está un ejemplo de cómo esto sucede:
1
5