You are on page 1of 18

UNIVERSIDAD ESTATAL A DISTANCIA.

1 de
marzo
UNED
2010
Jonathan Sánchez Carmona.
Email:jsanca20@gmail.com
TAREA
Celular: 8874-98-73 1
Heredia, Ulloa
Código: 3075
PAC: 34
Tabla de Contenidos
Introducción...............................................................................................................................................4
Descripción................................................................................................................................................5
Código fuente.............................................................................................................................................6
Default.aspx......................................................................................................................................6
Default.aspx.cs..................................................................................................................................9
ShowResult.aspx.............................................................................................................................11
ShowResult.aspx.cs........................................................................................................................12
Capturas de pantalla.................................................................................................................................13
Pantalla Inicial................................................................................................................................13
Validación Parte 1...........................................................................................................................14
Validación parte 2...........................................................................................................................15
Datos Correctos..............................................................................................................................16
Pantalla de confirmación................................................................................................................17
Conclusiones............................................................................................................................................18
Biblografía...............................................................................................................................................18
Introducción

El presente trabajo, basicamente introduce la solución de la tarea numero 1, cuyo objetivo principal es
demostrar los conocimientos y habilidades en la utilización de paginas ASPX y validación de los
diferentes campos.

A través del código, se mostrará no solo la utilización de los diferentes controles Web Forms, si no
también la utilización de controles de validación, tales como, RequiredFieldValidator,
RegularExpressionValidator y CustomValidator; todas estas validaciones se realizan tanto, en la parte
del cliente como en el servidor, para como bien indica, el libro de texto, evitar intrucciones de codigo
malisioso a través de llamadas desde el cliente.
Descripción
Para implementar esta tarea, se debío investigar temas tales como; utilización de ASP .Net, Web
Controls, Validator, uso de la session, etc.

Adicionalmente, se investigo el uso del objecto Server, especificamente el método: Transfer, mediante
el cual, se puede realizar un “forward” de una pagina ASP a otra, sin que esto signifique perder el
estado de la llamada HTTP, a diferencia de Redirect, que representa un force redirect client, el cual no
conserva el esto pero en contra posición permite, realizar cambios de flujo, hacia sitios fuera del
dominio, es decir que desde un sitio X, puede redireccionarse a un sitio Y.
Código fuente

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-


transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ingresar Datos</title>
<script language="javascript" type="text/javascript">

/**
* This Method validates the Birth Date, this date has to be
* before the current date.
*/
function validateBirthDate (source, arguments) {

var dateTxt = document.form1.birthDateTxt.value;


var dateObject = parseDate (dateTxt);
arguments.IsValid = true;

if (0 == dateObject) {

arguments.IsValid = false;
} else {

if (dateObject > new Date()) {

arguments.IsValid = false;
}
}
} // validateBirthDate.

var monthIndex = 1;
var monthMapper = {'ene':1, 'feb':2, 'mar':3, 'abr':4,'may':5,'jun':6,'jul':7,'ago':8,'set':9,'oct':10,'nov':11,'dic':12};

/**
* This method parses the date, expecting the format: DD/MMM/AAAA
* for example: 30/DIC/2009
* If the string is valid, then will returns a Date object.
* if not returns zero.
*/
function parseDate (datetxt) {

var date = 0;
var monthIndexTemp = 0;
var dateTokenArray = datetxt.split('/');
if (3 != dateTokenArray.length) {

alert ("La fecha de nacimiento, debe tener el siguiente formato: DD/MMM/AAAA");


} else {
monthIndexTemp = monthMapper[dateTokenArray[1].toLowerCase()];
if (!(monthIndexTemp) || (monthIndexTemp > 12)) {

alert("La fecha de nacimiento, debe tener el siguiente formato: DD/MMM/AAAA");


} else {

date = new Date (dateTokenArray[2], monthIndexTemp, dateTokenArray[0]);


}
}

return date;
} // parsedate
</script>
</head>
<body>
<form id="form1" name="form1" runat="server">
<div>

Por favor ingrese sus datos en los campos respectivos:<br />

</div>
<p>
Nombre:
<asp:TextBox ID="nameTxt" runat="server" Height="20px"
ToolTip="Ingrese aqui su nombre" Width="141px" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="El campo nombre es requerido" ControlToValidate="nameTxt" >El campo nombre es
requerido</asp:RequiredFieldValidator>
</p>
<p>
Pr. Apellido:&nbsp;
<asp:TextBox ID="firstLastNameTxt" runat="server" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="firstLastNameTxt"
ErrorMessage="El campo Pr Apellido es requerido">El campo Pr Apellido es
requerido</asp:RequiredFieldValidator>
</p>
<p>
Sd. Apellido:
<asp:TextBox ID="secondLastNameTxt" runat="server" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="secondLastNameTxt"
ErrorMessage="El campo Sd Apellido es requerido">El campo Sd Apellido es
requerido</asp:RequiredFieldValidator>
</p>
<p>
Cédula:&nbsp;
<asp:TextBox ID="idTxt" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="idTxt"
ErrorMessage="El campo cedula es requerido">El campo cedula es
requerido</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="idTxt"
ErrorMessage="La cedula debe seguir el formato #-####-####"
ValidationExpression="[0-9]-[0-9]{4}-[0-9]{4}">La cedula debe
seguir el formato #-####-####</asp:RegularExpressionValidator>
</p>
<p>
Fecha de nacimiento:
<asp:TextBox ID="birthDateTxt" MaxLength="11" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="birthDateTxt"
ErrorMessage="El fecha de nacimiento es requerido">El fecha de nacimiento es
requerido</asp:RequiredFieldValidator>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ClientValidationFunction="validateBirthDate" ControlToValidate="birthDateTxt"
ErrorMessage="La fecha debe ser menor a la fecha actual y con el formado DD/MMM/YYYY"
onservervalidate="CustomValidator1_ServerValidate">La fecha debe ser menor a la fecha actual y con el formado
DD/MMM/YYYY</asp:CustomValidator>

</p>
<p>
&nbsp;Dirección de la casa de habitación</p>
<p>
&nbsp;<asp:TextBox ID="address" runat="server" Height="64px" TextMode="MultiLine"
Width="702px"></asp:TextBox>
</p>
<p>
Nivel educativo:&nbsp;
<asp:DropDownList ID="educationLevelDropDownList" runat="server">
<asp:ListItem Value="school">Primaria</asp:ListItem>
<asp:ListItem Value="highSchool">Secundaria</asp:ListItem>
<asp:ListItem Value="college">Universidad</asp:ListItem>
</asp:DropDownList>
</p>
<p>
Puesto a ocupar:
<asp:DropDownList ID="openPositionDropDownList" runat="server">
<asp:ListItem Value="programmer">Programador</asp:ListItem>
<asp:ListItem Value="analyst">Analista</asp:ListItem>
<asp:ListItem Value="design">Diseñador</asp:ListItem>
<asp:ListItem Value="pm">Project Manager</asp:ListItem>
</asp:DropDownList>
</p>
<p>
Descripción de funciones del puesto a ocupar:</p>
<asp:TextBox ID="descriptionOfJobTxt" runat="server" Height="66px"
Width="702px"></asp:TextBox>
<p>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Enviar" />
</p>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections;

public partial class _Default : System.Web.UI.Page


{
private static Hashtable monthMapper = new Hashtable();

protected void Page_Load(object sender, EventArgs e)


{
// Add the mapping to the monthMapper
if (monthMapper.Count == 0)
{
monthMapper.Add("ene", 1);
monthMapper.Add("feb", 2);
monthMapper.Add("mar", 3);
monthMapper.Add("abr", 4);
monthMapper.Add("may", 5);
monthMapper.Add("jun", 6);
monthMapper.Add("jul", 7);
monthMapper.Add("ago", 8);
monthMapper.Add("set", 9);
monthMapper.Add("oct", 10);
monthMapper.Add("nov", 11);
monthMapper.Add("dic", 12);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
// everything ok, then add the name and lastname to the session
// in order to show the complete name in the next forward
Session.Add("name", this.nameTxt.Text + " " + this.firstLastNameTxt.Text + " " +
this.secondLastNameTxt.Text);
Server.Transfer("ShowResult.aspx", true);

/// <summary>
/// This method is used to determinate if the birthDate is ok.
/// </summary>
/// <param name="source"></param>
/// <param name="args"></param>
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
//DD/MMM/YYYY
string birthDateString = this.birthDateTxt.Text;
string[] dateTokens = birthDateString.Split('/');

args.IsValid = dateTokens.Length == 3;
if (args.IsValid) {

args.IsValid = null != monthMapper[dateTokens[1].ToLower()];


if (args.IsValid) {
DateTime dateTime = new DateTime(
Convert.ToInt32(dateTokens[2]),
(int)monthMapper[dateTokens[1].ToLower()],
Convert.ToInt32(dateTokens[0]));

args.IsValid = dateTime.CompareTo(DateTime.Now) == -1;


}
}
}
}
ShowResult.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowResult.aspx.cs" Inherits="ShowResult" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-


transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>

Sus datos han sido ingresados de forma exitosa.


<form id="form1" name="form1" runat="server">
<div>

<asp:Label ID="nameTxt" runat="server"></asp:Label>

</div>
</form>
</body>
</html>
ShowResult.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/**
* This class is used to show the valid result
*/
public partial class ShowResult : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Get from the session the name to show.
this.nameTxt.Text = (string)Session["name"];
}
}
Capturas de pantalla

Pantalla Inicial
Validación Parte 1
Validación parte 2
Datos Correctos
Pantalla de confirmación
Conclusiones

Como programador de Java por mas de 8 años, aun me parece muy temprano para hacer una
comparación entre ambas soluciones (java y .Net), sin embargo me parece que para aplicaciones de
gestión, el desarrollo en .Net, parece ser bastante sencillo.

También me parece que el enfoque de Form Document Oriented, que tienen los Web Forms, facilita por
ejemplo, el hecho que un programador de aplicaciones de escritorio, pueda pasarse con una curva de
aprendizaje relativamente pequeña, al desarrollo de aplicaciones Web.

Aunque no le metí mucha mano, me parece que la interface resulta algo tieza, habría que apoyarse un
poco mas en la parte de CCS, para ver si por ahi se puede atacar la rijidez que demuestran los controles.

Biblografía

Solo se utilizo, el documento digital del curso y la ayuda del MSDN.