Adición de tiempo de ejecución de los mensajes de error de validación de página
Uno de los requisitos en el momento de escritura de este sitio fue la capacidad del modelo de objeto de restricciones en OCL y, a continuación, la validación de la página actual en contra de las restricciones.
El problema con la normal de validadores es que están diseñadas para validar los controles individuales en lugar de una lista de restricciones sobre un objeto. El enfoque que tomó fue la de crear un validador que me puede colocar en cualquier formulario web y añadir tantos errores como yo necesitaba.
El primer paso fue crear un WebControl que apoyó IValidator
public class MultiValidator : WebControl, IValidator
{
}
entonces agregué un ArrayList para mantener las cadenas de error, y un método para agregar un error.
private ArrayList Errores = new ArrayList()
public void AddError(string mensaje)
{
Errores.Agregar(mensaje)
}//AddError
Cuando ASP .net valida una página enumera todas las IValidators dentro de sus propios Validadores de la propiedad, y llamó a IValidator.Validate(). Para determinar si la página es válida o no, a continuación, comprueba IValidator.IsValid.
Para agregar mensajes de error personalizados en tiempo de ejecución decidí crear un estático clase de validador que siempre devuelve 'false' de IsValidator.IsValid. Para cada mensaje de error en mi MultiValidator yo podría simplemente crear una instancia de uno de estos validadores.
[ToolboxItem(false)]
clase interna StaticValidator : IValidator
{
private string errorMessage
#región IValidator
void IValidator.Validar()
{
}//Validar
bool IValidator.IsValid
{
get { return false }
conjunto { }
}//IsValid
#endregion
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
}
Ahora que la StaticValidator fue escrito, todo lo que necesitaba hacer era agregar la necesaria IValidator implementaciones para mi MultiValidator clase.
#región IValidator
void IValidator.Validar()
{
isValid = (Errores.Count == 0)
foreach(string error en los Errores)
{
StaticValidator validador = new StaticValidator()
validador.ErrorMessage = error
de la Página.Los validadores.Agregar(validador)
los Validadores.Agregar(validador)
}//foreach errores
}//Validar
bool IValidator.IsValid
{
get { return isValid }
conjunto { isValid = valor }
}//IsValid
#endregion
Dentro de un formulario web, ahora me
- Set 'CausesValidation' a false en mi botón de enviar.
- Validar mi objeto
- Llamada MultiValidator1.AddError() para cada error encontrado
- Página de la Convocatoria.Validar()
- Comprobar Página.IsValid como normal
el Uso de un ValidationSummary entonces yo podría mostrar el roto restricciones para el usuario para la rectificación. El código fuente completo se enumeran a continuación....
MultiValidator.cs
using System;
uso del Sistema.Colecciones
uso del Sistema.ComponentModel
uso del Sistema.Web.Interfaz de usuario
uso del Sistema.Web.La interfaz de usuario.WebControls
espacio de nombres DroopyEyes.Web.Controles
{
public class MultiValidator : WebControl, IValidator
{
#Miembros de la región
private bool isValid = true
private string errorMessage = ''
private ArrayList Errores = new ArrayList()
private ArrayList Validadores = new ArrayList()
#endregion
#región IValidator
void IValidator.Validar()
{
isValid = (Errores.Count == 0)
foreach(string error en los Errores)
{
StaticValidator validador = new StaticValidator()
validador.ErrorMessage = error
de la Página.Los validadores.Agregar(validador)
los Validadores.Agregar(validador)
}//foreach errores
}//Validar
bool IValidator.IsValid
{
get { return isValid }
conjunto { isValid = valor }
}//IsValid
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
de la Página.Los validadores.Agregar(este)
}
protected override void OnUnload(EventArgs e)
{
si (Página != null)
{
de la Página.Los validadores.Quitar(este)
foreach(IValidator validador en los Validadores)
de la Página.Los validadores.Quitar(validador)
}//Página != null
base.OnUnload(e)
}
public void AddError(string mensaje)
{
Errores.Agregar(mensaje)
}//AddError
#las Propiedades de la región
[Bindable(true)]
[Categoría('Apariencia')]
[DefaultValue('')]
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
#endregion
}
}
StaticValidator.cs
using System;
uso del Sistema.ComponentModel
uso del Sistema.Web.Interfaz de usuario
espacio de nombres DroopyEyes.Web.Controles
{
[ToolboxItem(false)]
clase interna StaticValidator : IValidator
{
private string errorMessage
#región IValidator
void IValidator.Validar()
{
Sistema.Los diagnósticos.De traza.WriteLine('StaticValidator.Validar()')
}//Validar
bool IValidator.IsValid
{
get { return false }
conjunto { }
}//IsValid
#endregion
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
}
}
Adicion de tiempo de ejecucion de los mensajes de error de validacion de pagina
Adicion de tiempo de ejecucion de los mensajes de error de validacion de pagina : Multi-millones de consejos para hacer su vida mas facil.
Uno de los requisitos en el momento de escritura de este sitio fue la capacidad del modelo de objeto de restricciones en OCL y, a continuacion, la validacion de la pagina actual en contra de las restricciones.
El problema con la normal de validadores es que estan diseñadas para validar los controles individuales en lugar de una lista de restricciones sobre un objeto. El enfoque que tomo fue la de crear un validador que me puede colocar en cualquier formulario web y añadir tantos errores como yo necesitaba.
El primer paso fue crear un WebControl que apoyo IValidator
public class MultiValidator : WebControl, IValidator
{
}
entonces agregue un ArrayList para mantener las cadenas de error, y un metodo para agregar un error.
private ArrayList Errores = new ArrayList()
public void AddError(string mensaje)
{
Errores.Agregar(mensaje)
}//AddError
Cuando ASP .net valida una pagina enumera todas las IValidators dentro de sus propios Validadores de la propiedad, y llamo a IValidator.Validate(). Para determinar si la pagina es valida o no, a continuacion, comprueba IValidator.IsValid.
Para agregar mensajes de error personalizados en tiempo de ejecucion decidi crear un estatico clase de validador que siempre devuelve 'false' de IsValidator.IsValid. Para cada mensaje de error en mi MultiValidator yo podria simplemente crear una instancia de uno de estos validadores.
[ToolboxItem(false)]
clase interna StaticValidator : IValidator
{
private string errorMessage
#region IValidator
void IValidator.Validar()
{
}//Validar
bool IValidator.IsValid
{
get { return false }
conjunto { }
}//IsValid
#endregion
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
}
Ahora que la StaticValidator fue escrito, todo lo que necesitaba hacer era agregar la necesaria IValidator implementaciones para mi MultiValidator clase.
#region IValidator
void IValidator.Validar()
{
isValid = (Errores.Count == 0)
foreach(string error en los Errores)
{
StaticValidator validador = new StaticValidator()
validador.ErrorMessage = error
de la Pagina.Los validadores.Agregar(validador)
los Validadores.Agregar(validador)
}//foreach errores
}//Validar
bool IValidator.IsValid
{
get { return isValid }
conjunto { isValid = valor }
}//IsValid
#endregion
Dentro de un formulario web, ahora me
- Set 'CausesValidation' a false en mi boton de enviar.
- Validar mi objeto
- Llamada MultiValidator1.AddError() para cada error encontrado
- Pagina de la Convocatoria.Validar()
- Comprobar Pagina.IsValid como normal
el Uso de un ValidationSummary entonces yo podria mostrar el roto restricciones para el usuario para la rectificacion. El codigo fuente completo se enumeran a continuacion....
MultiValidator.cs
using System;
uso del Sistema.Colecciones
uso del Sistema.ComponentModel
uso del Sistema.Web.Interfaz de usuario
uso del Sistema.Web.La interfaz de usuario.WebControls
espacio de nombres DroopyEyes.Web.Controles
{
public class MultiValidator : WebControl, IValidator
{
#Miembros de la region
private bool isValid = true
private string errorMessage = ''
private ArrayList Errores = new ArrayList()
private ArrayList Validadores = new ArrayList()
#endregion
#region IValidator
void IValidator.Validar()
{
isValid = (Errores.Count == 0)
foreach(string error en los Errores)
{
StaticValidator validador = new StaticValidator()
validador.ErrorMessage = error
de la Pagina.Los validadores.Agregar(validador)
los Validadores.Agregar(validador)
}//foreach errores
}//Validar
bool IValidator.IsValid
{
get { return isValid }
conjunto { isValid = valor }
}//IsValid
#endregion
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
de la Pagina.Los validadores.Agregar(este)
}
protected override void OnUnload(EventArgs e)
{
si (Pagina != null)
{
de la Pagina.Los validadores.Quitar(este)
foreach(IValidator validador en los Validadores)
de la Pagina.Los validadores.Quitar(validador)
}//Pagina != null
base.OnUnload(e)
}
public void AddError(string mensaje)
{
Errores.Agregar(mensaje)
}//AddError
#las Propiedades de la region
[Bindable(true)]
[Categoria('Apariencia')]
[DefaultValue('')]
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
#endregion
}
}
StaticValidator.cs
using System;
uso del Sistema.ComponentModel
uso del Sistema.Web.Interfaz de usuario
espacio de nombres DroopyEyes.Web.Controles
{
[ToolboxItem(false)]
clase interna StaticValidator : IValidator
{
private string errorMessage
#region IValidator
void IValidator.Validar()
{
Sistema.Los diagnosticos.De traza.WriteLine('StaticValidator.Validar()')
}//Validar
bool IValidator.IsValid
{
get { return false }
conjunto { }
}//IsValid
#endregion
public string ErrorMessage
{
get { return errorMessage }
conjunto { errorMessage = valor }
}//ErrorMessage
}
}
Adición de tiempo de ejecución de los mensajes de error de validación de página
By Consejos Y Trucos
Adición de tiempo de ejecución de los mensajes de error de validación de página : Multi-millones de consejos para hacer su vida más fácil.