Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung


Eine der Anforderungen beim Schreiben von dieser Site war die Fähigkeit, Modell Objekt Einschränkungen in OCL und überprüfen dann die aktuelle Seite gegen diese Einschränkungen.

Das Problem mit normalen Bestätigungen ist, dass sie entworfen sind, um eine Liste der Einschränkungen für ein Objekt, anstatt einzelne Steuerelemente zu überprüfen. Der Ansatz, den ich nahm war einen Validator zu erstellen, die ich Stelle auf jeder Webformular und fügen Sie so viele Fehler wie ich benötigt, können.

Der erste Schritt war ein WebControl zu erstellen, die IValidator unterstützt

publicclass MultiValidator: WebControl, IValidator
{
}

Ich habe dann eine ArrayList Fehlerzeichenfolgen und eine Methode einen Fehler hinzufügen zu halten.

Private ArrayList Störungen = new ArrayList();

public void AddError (int i)
{
Errors.Add(message);
} //AddError

Wenn ASP-NET eine Seite überprüft es listet alle IValidators innerhalb seiner eigenen Validators-Eigenschaft und IValidator.Validate() genannt. Um festzustellen, ob die Seite gültig ist, überprüft er dann IValidator.IsValid.

Um benutzerdefinierte Fehlermeldungen zur Laufzeit hinzuzufügen habe ich beschlossen, eine statische Validator-Klasse zu erstellen, die aus IsValidator.IsValid immer 'false' zurückgegeben. Für jede Fehlermeldung in meinem MultiValidator konnte ich dann einfach eine Instanz eines diese Bestätigungen erstellen.

[ToolboxItem(false)]
internalclass StaticValidator: IValidator
{
private String ErrorMessage;

#region IValidator
void IValidator.Validate()
{
} //Validate

Bool IValidator.IsValid
{
Get {returnfalse;}
Set {}
} //IsValid
#endregion

publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
}

Nun, da der StaticValidator geschrieben wurde, alles, was ich tun musste, war meine MultiValidator Klasse die erforderlichen IValidator-Implementierungen hinzu.

#region IValidator
void IValidator.Validate()
{
IsValid = (Errors.Count == 0);
Foreach (String Fehler in Errors)
{
StaticValidator Validator = neue StaticValidator();
Validator. ErrorMessage = Fehler;
Page.Validators.Add(validator);
Validators.Add(validator);
} //foreach Störungen
} //Validate

Bool IValidator.IsValid
{
Get {return IsValid;}
Set {IsValid = Value;}
} //IsValid
#endregion

Jetzt würde ich in ein Webformular

  1. Setzen Sie 'CausesValidation' auf False auf meine Schaltfläche Absenden.
  2. Mein Objekt validieren
  3. Rufen Sie MultiValidator1.AddError() für jeden Fehler aufgetreten
  4. Aufruf Page.Validate()
  5. Page.IsValid als normal zu überprüfen

Mit einem ValidationSummary konnte ich dann die gebrochenen Einschränkungen dem Benutzer zur Berichtigung anzeigen. Der gesamten Quellcode wird nachstehend aufgeführt...

MultiValidator.cs


using System;
using System.Collections;
using System.ComponentModel;
verwenden System.Web.UI;
verwenden System.Web.UI.WebControls;

Namespace DroopyEyes.Web.Controls
{
publicclass MultiValidator: WebControl, IValidator
{
#region Mitglieder
private Bool IsValid = True;
private String ErrorMessage = '';
Private ArrayList Störungen = new ArrayList();
Private ArrayList-Validators = new ArrayList();
#endregion

#region IValidator
void IValidator.Validate()
{
IsValid = (Errors.Count == 0);
Foreach (String Fehler in Errors)
{
StaticValidator Validator = neue StaticValidator();
Validator. ErrorMessage = Fehler;
Page.Validators.Add(validator);
Validators.Add(validator);
} //foreach Störungen
} //Validate

Bool IValidator.IsValid
{
Get {return IsValid;}
Set {IsValid = Value;}
} //IsValid
#endregion

Writer protected Override void OnInit (EventArgse)
{
Base. OnInit(e);
Page.Validators.Add(this);
}

protectedoverridevoid OnUnload (EventArgse)
{
Wenn (Page! = Null)
{
Page.Validators.Remove(this);
Foreach (IValidator Bestätigung in Validators)
Page.Validators.Remove(validator);
} //Page! = Null

Base. OnUnload(e);
}

public void AddError (int i)
{
Errors.Add(message);
} //AddError

#region Eigenschaften
[Bindable(true)]
[Category('Appearance')]
[DefaultValue('')]
publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
#endregion

}
}

StaticValidator.cs

using System;
using System.ComponentModel;
verwenden System.Web.UI;

Namespace DroopyEyes.Web.Controls
{
[ToolboxItem(false)]
internalclass StaticValidator: IValidator
{
private String ErrorMessage;

#region IValidator
void IValidator.Validate()
{
System.Diagnostics.Trace.WriteLine('StaticValidator.Validate()');
} //Validate

Bool IValidator.IsValid
{
Get {returnfalse;}
Set {}
} //IsValid
#endregion

publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
}
}









Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung


Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Eine der Anforderungen beim Schreiben von dieser Site war die Fähigkeit, Modell Objekt Einschränkungen in OCL und überprüfen dann die aktuelle Seite gegen diese Einschränkungen.

Das Problem mit normalen Bestätigungen ist, dass sie entworfen sind, um eine Liste der Einschränkungen für ein Objekt, anstatt einzelne Steuerelemente zu überprüfen. Der Ansatz, den ich nahm war einen Validator zu erstellen, die ich Stelle auf jeder Webformular und fügen Sie so viele Fehler wie ich benötigt, können.

Der erste Schritt war ein WebControl zu erstellen, die IValidator unterstützt

publicclass MultiValidator: WebControl, IValidator
{
}

Ich habe dann eine ArrayList Fehlerzeichenfolgen und eine Methode einen Fehler hinzufügen zu halten.

Private ArrayList Störungen = new ArrayList();

public void AddError (int i)
{
Errors.Add(message);
} //AddError

Wenn ASP-NET eine Seite überprüft es listet alle IValidators innerhalb seiner eigenen Validators-Eigenschaft und IValidator.Validate() genannt. Um festzustellen, ob die Seite gültig ist, überprüft er dann IValidator.IsValid.

Um benutzerdefinierte Fehlermeldungen zur Laufzeit hinzuzufügen habe ich beschlossen, eine statische Validator-Klasse zu erstellen, die aus IsValidator.IsValid immer 'false' zurückgegeben. Für jede Fehlermeldung in meinem MultiValidator konnte ich dann einfach eine Instanz eines diese Bestätigungen erstellen.

[ToolboxItem(false)]
internalclass StaticValidator: IValidator
{
private String ErrorMessage;

#region IValidator
void IValidator.Validate()
{
} //Validate

Bool IValidator.IsValid
{
Get {returnfalse;}
Set {}
} //IsValid
#endregion

publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
}

Nun, da der StaticValidator geschrieben wurde, alles, was ich tun musste, war meine MultiValidator Klasse die erforderlichen IValidator-Implementierungen hinzu.

#region IValidator
void IValidator.Validate()
{
IsValid = (Errors.Count == 0);
Foreach (String Fehler in Errors)
{
StaticValidator Validator = neue StaticValidator();
Validator. ErrorMessage = Fehler;
Page.Validators.Add(validator);
Validators.Add(validator);
} //foreach Störungen
} //Validate

Bool IValidator.IsValid
{
Get {return IsValid;}
Set {IsValid = Value;}
} //IsValid
#endregion

Jetzt würde ich in ein Webformular

  1. Setzen Sie 'CausesValidation' auf False auf meine Schaltfläche Absenden.
  2. Mein Objekt validieren
  3. Rufen Sie MultiValidator1.AddError() für jeden Fehler aufgetreten
  4. Aufruf Page.Validate()
  5. Page.IsValid als normal zu überprüfen

Mit einem ValidationSummary konnte ich dann die gebrochenen Einschränkungen dem Benutzer zur Berichtigung anzeigen. Der gesamten Quellcode wird nachstehend aufgeführt...

MultiValidator.cs


using System;
using System.Collections;
using System.ComponentModel;
verwenden System.Web.UI;
verwenden System.Web.UI.WebControls;

Namespace DroopyEyes.Web.Controls
{
publicclass MultiValidator: WebControl, IValidator
{
#region Mitglieder
private Bool IsValid = True;
private String ErrorMessage = '';
Private ArrayList Störungen = new ArrayList();
Private ArrayList-Validators = new ArrayList();
#endregion

#region IValidator
void IValidator.Validate()
{
IsValid = (Errors.Count == 0);
Foreach (String Fehler in Errors)
{
StaticValidator Validator = neue StaticValidator();
Validator. ErrorMessage = Fehler;
Page.Validators.Add(validator);
Validators.Add(validator);
} //foreach Störungen
} //Validate

Bool IValidator.IsValid
{
Get {return IsValid;}
Set {IsValid = Value;}
} //IsValid
#endregion

Writer protected Override void OnInit (EventArgse)
{
Base. OnInit(e);
Page.Validators.Add(this);
}

protectedoverridevoid OnUnload (EventArgse)
{
Wenn (Page! = Null)
{
Page.Validators.Remove(this);
Foreach (IValidator Bestätigung in Validators)
Page.Validators.Remove(validator);
} //Page! = Null

Base. OnUnload(e);
}

public void AddError (int i)
{
Errors.Add(message);
} //AddError

#region Eigenschaften
[Bindable(true)]
[Category('Appearance')]
[DefaultValue('')]
publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
#endregion

}
}

StaticValidator.cs

using System;
using System.ComponentModel;
verwenden System.Web.UI;

Namespace DroopyEyes.Web.Controls
{
[ToolboxItem(false)]
internalclass StaticValidator: IValidator
{
private String ErrorMessage;

#region IValidator
void IValidator.Validate()
{
System.Diagnostics.Trace.WriteLine('StaticValidator.Validate()');
} //Validate

Bool IValidator.IsValid
{
Get {returnfalse;}
Set {}
} //IsValid
#endregion

publicstring ErrorMessage
{
erhalten Sie {ErrorMessage return;}
Set {ErrorMessage = Value;}
} //ErrorMessage
}
}


Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung

Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Hinzufügen von Laufzeit-Fehlermeldungen zu Validierung
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung