Vamos a ver. Yo lo que estaba tratando de hacer es montar un archivo de clase que contuviera todas las funciones para validar los campos pasados de un formulario.
Funciones para comprobar cosas como campo vacío, una longitud de caracteres determinada, campo numérico, es fecha válida, casilla chequeada, ... y cosas así.
Entonces, tengo el formulario:
z_form_funcionesvalid.aspx
Código:
<%@ Page language="c#" Codebehind="z_form_funcionesvalid.aspx.cs" AutoEventWireup="false" Inherits="webvideoclub.z_form_funcionesvalid" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>z_form_funcionesvalid</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="z_form_funcionesvalid" method="post" runat="server">
<asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 184px; POSITION: absolute; TOP: 73px" runat="server">Numero:</asp:Label>
<asp:Label id="Label3" style="Z-INDEX: 106; LEFT: 199px; POSITION: absolute; TOP: 129px" runat="server">Menú:</asp:Label>
<asp:TextBox id="TextBox2" style="Z-INDEX: 104; LEFT: 252px; POSITION: absolute; TOP: 97px" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 252px; POSITION: absolute; TOP: 68px" runat="server"></asp:TextBox>
<asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 169px; POSITION: absolute; TOP: 102px" runat="server">Texto (20):</asp:Label>
<asp:DropDownList id="DropDownList1" style="Z-INDEX: 105; LEFT: 252px; POSITION: absolute; TOP: 129px" runat="server">
<asp:ListItem Value="Seleccionar un elemento" Selected="True">Seleccionar un elemento</asp:ListItem>
<asp:ListItem Value="Elemento 1 Menú">Elemento 1 Menú</asp:ListItem>
<asp:ListItem Value="Elemento 2 Menú">Elemento 2 Menú</asp:ListItem>
</asp:DropDownList>
<asp:CheckBox id="CheckBox1" style="Z-INDEX: 107; LEFT: 204px; POSITION: absolute; TOP: 159px" runat="server" TextAlign="Left" Text="Casilla:"></asp:CheckBox>
<asp:RadioButtonList id="RadioButtonList1" style="Z-INDEX: 108; LEFT: 244px; POSITION: absolute; TOP: 179px" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="Opción 1">Opción 1</asp:ListItem>
<asp:ListItem Value="Opción 2">Opción 2</asp:ListItem>
</asp:RadioButtonList>
<asp:ListBox id="ListBox1" style="Z-INDEX: 109; LEFT: 251px; POSITION: absolute; TOP: 212px" runat="server">
<asp:ListItem Value="Lista Elemento 1">Lista Elemento 1</asp:ListItem>
<asp:ListItem Value="Lista Elemento 2">Lista Elemento 2</asp:ListItem>
<asp:ListItem Value="Lista Elemento 3">Lista Elemento 3</asp:ListItem>
<asp:ListItem Value="Lista Elemento 4">Lista Elemento 4</asp:ListItem>
</asp:ListBox>
<asp:Button id="Button1" style="Z-INDEX: 110; LEFT: 255px; POSITION: absolute; TOP: 311px" runat="server" Text="Enviar"></asp:Button>
<asp:Panel id="Panel1" style="Z-INDEX: 111; LEFT: 27px; POSITION: absolute; TOP: 176px" runat="server" Width="132px" Height="114px" BorderStyle="Solid" BorderWidth="1px" Visible="False">
<%= errores_insDatos(verrores_insDatos)%>
<%--=verrores_insDatos--%>
<BR>
<asp:Button id="Button2" runat="server" Text="Ocultar"></asp:Button>
</asp:Panel>
</form>
</body>
</HTML>
y en su parte de código:
z_form_funcionesvalid.aspx.cs
Código:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace webvideoclub
{
/// <summary>
/// Descripción breve de z_form_funcionesvalid.
/// </summary>
public class z_form_funcionesvalid : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.CheckBox CheckBox1;
protected System.Web.UI.WebControls.RadioButtonList RadioButtonList1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.ListBox ListBox1;
protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.Button Button2;
protected string verrores_insDatos;
private void Page_Load(object sender, System.EventArgs e)
{
// Introducir aquí el código de usuario para inicializar la página
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: llamada requerida por el Diseñador de Web Forms ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Método necesario para admitir el Diseñador, no se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void comprobarDatos()
{
/*
* COMPROBACIÓN DE CONTENIDO Y TAMAÑO
* */
verrores_insDatos = "";
//NÚMERO (NO NULL Y NÚMERO)
if(webvideoclub.funcionesvalid.estaVacio(TextBox1.Text) == true)
{
verrores_insDatos = verrores_insDatos + "<br>• Suministrar dato en la casilla <strong>[Número]</strong>.";
}
else
{
if(webvideoclub.funcionesvalid.esNumero(TextBox1.Text) == false)
{
verrores_insDatos = verrores_insDatos + "<br>• El dato de la casilla <strong>[Número]</strong> debe ser un número.";
}
}
//TEXTO (NO NULL Y LONGITUD 20)
if(webvideoclub.funcionesvalid.estaVacio(TextBox2.Text) == true)
{
verrores_insDatos = verrores_insDatos + "<br>• Suministrar dato en la casilla <strong>[Texto]</strong>.";
}
else
{
if(webvideoclub.funcionesvalid.longitudCorrecta(TextBox2.Text, 20) == false)
{
verrores_insDatos = verrores_insDatos + "<br>• La longitud máxima permitida del dato <strong>[Texto]</strong> es de 20 caracteres.";
}
}
//CASILLA CHEQUEADA Ó NO
//...
//SI SE DIÓ ALGÚN ERROR DE DATOS...
if(verrores_insDatos != "")
{
verrores_insDatos = "<br>* ERROR(ES) PRODUCIDO(S) *<br>" + verrores_insDatos;
}
}
protected string errores_insDatos(string los_verrores_insDatos)
{
return los_verrores_insDatos;
}
private void Button1_Click(object sender, System.EventArgs e)
{
comprobarDatos();
if(verrores_insDatos != "")
{
errores_insDatos(verrores_insDatos);
Panel1.Visible = true;
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
Panel1.Visible = false;
}
}
}
Y este es el archivo de clase dónde estoy poniendo las funciones de validación:
Código:
using System;
namespace webvideoclub
{
/// <summary>
/// Descripción breve de funcionesvalid.
/// </summary>
public class funcionesvalid
{
public funcionesvalid()
{
//
// TODO: agregar aquí la lógica del constructor
//
}//estaVacio
public static bool estaVacio(object valor)
{
if(valor.ToString() == "")
//if(valor.ToString().Length == 0)
{
return true;
}
else
{
return false;
}
}
public static bool longitudCorrecta(object valor, int longitudCampo)
{
if(valor.ToString().Length > longitudCampo)
{
return false;
}
else
{
return true;
}
}
public static bool esNumero(object value)
{
try
{
double d = System.Double.Parse(value.ToString(), System.Globalization.NumberStyles.Any);
return true;
}
catch (System.FormatException)
{
return false;
}
}
//¿¿FUNCIÓN CASILLA CHEQUEADA??
//...
}
}
Espero que ahora se entienda lo que estaba pidiendo, es parecido a lo que dice
Holden...
No se si es la mejor manera de hacerlo. Yo estaba haciendo pruebas para ver si se podía hacer así, y tener una clase con todas las funciones que fueran manejadas por todos los formularios a validar...