Hola a tod@s:
Buscando en Internet como programar un CustomValidator validando desde el Servidor, encontré el siguiente artículo que, a su vez, está sacado de un manual llamado "ASP.NET 2.0 Unleashed":
http://www.samspublishing.com/articl...&seqNum=8&rl=1
Como se puede ver en el código de éste artículo, en su apartado "Creating a LengthValidator Control", se programa en un archivo de clase las funciones para validar la longitud de un campo de texto.
Como se puede ver, el código está hecho en VB. Y yo que quería aplicarlo a un sito web realizado en C#, he pasado el código de la clase que contiene las validaciones construida a C# tal como sigue:
Código:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace pruebasvarias_VS2005_cs
{
/// <summary>
/// Descripción breve de validaciones
/// </summary>
public class validaciones : BaseValidator
{
public validaciones()
{
//
// TODO: Agregar aquí la lógica del constructor
//
}
int longitud_max = 0;
public int Maxima_Longitud {
get {
return longitud_max;
}
set {
longitud_max = value;
}
}
protected override bool EvaluateIsValid()
{
//LA SIGUIENTE LÍNEA SE INSERTA AUTOMÁTICAMENTE
//AL TECLEAR Y ELEGIR EL EvaluateIsValid:
//¿DÓNDE VA Ó SE PUEDE OBVIAR?
//throw new Exception("El método ó la operación no está implementada.");
string valor = this.GetControlValidationValue(this.ControlToValidate);
if (valor.Length > longitud_max)
{
return false;
}
else
{
return true;
}
}
}
}//fin de namespace pruebasvarias_VS2005_cs
¿Está bien traducido de VB a C#?
A mí funcionar me funciona pero al teclear lo de la propiedad
"Maxima_Longitud" (en VB puesto como
Public Property MaximumLength() As Integer), me salían otras como PropertyCollection, PropertyEntry, ... , PropertyGridEditorPart, ... , PropertyValueOrigin
¿Tenía que haber elegido alguna de estas en vez de cómo lo he puesto?
Otra duda
La línea ...
[ throw new Exception("El método ó la operación no está implementada."); ]
... se inserta automáticamente al teclear el EvaluateIsValid; y no sé si va ahí ó se pone de otra manera ó no hace falta ó que. ¿Alguien sabe algo?
La cosa es que comentada la línea mencionada, funciona la validación
Y la última duda es la que sigue, y la que más me interesa.
Al final del apartado, se indica que se accede a las funciones de longitud a través de la directiva <%@ Register %>. Y que si se deseara que dichas funciones fueran accesibles desde múltiples páginas de la aplicación, habría que registrar el control en la sección <pages>...</pages> del Web.config.
He probado a poner la instrucción en la sección mencionada, pero noi logro que funcione. Y viendo lo que he encontrado por Internet, parece que esto de ponerlo en dicha sección sólo vale para controles de usuario web y .dll.
Luego, ¿para el control de validación construido no valdría?
Si se puede hacer tal como dice el artículo del enlace y registrarlo en la sección <pages>...</pages>, ¿alguien sabe cómo?