Drei verschiedene Events stehen während der Validierung zur Verfügung.
OnBeforeValidationWird vor der Validierung ausgeführt. An dieser Stelle kann man beispielsweise noch Felder ändern, bevor diese validiert werden. Das Event wird nur aufgerufen, wenn der Datensatz von einer Maske verändert wird.OnOrmValidateModelDieses Event wird ausgeführt, wenn bei der Validierung ein Ausnahme auftritt.OnAfterOrmValidationWird nach der Ausführung der Validatoren ausgrführt. Zugriff auf denModelStateerhält man über den Datensatz selbst (orm.ModelState). Es ist auch möglich an dieser Stelle den ModelState abzuändern. Beispielsweise einen Fehler zu erstellen, also eine weitere Validierung durchzuführen oder den Datensatz doch als Valide zu kennzeichnen.
public override void OnBeforeValidation(OrmBABase orm)
{
OrmMyDataTable myDataTable = (OrmMyDataTable)orm;
myDataTable.TextField = "Inhalt: " + myDataTable.TextField;
}
public override void OnOrmValidateModel(OrmBABase orm, ref Exception e)
{
OrmMyDataTable myDataTable = (OrmMyDataTable)orm;
myDataTable.LastValidatenException = e.Message;
}
public override void OnAfterOrmValidation(OrmBABase orm, ref bool baseValidationResult)
{
OrmMyDataTable myDataTable = (OrmMyDataTable)orm;
if (myDataTable.BooleanField && (myDataTable.TextField == null || !myDataTable.TextField.StartsWith("Inhalt")))
{
myDataTable.ModelState.AddModelError(nameof(OrmMyDataTable.TextField), "[INSERT TRANSLATION GUID]".Translate());
baseValidationResult = false;
}
if (baseValidationResult)
myDataTable.BooleanField = false;
}


