clsCustomValidator¶
This specialized binder participates in the same manager validation pipeline as control binders, but it exists to run caller-supplied validation logic or whole-object IsValid checks instead of transferring values between a control and an object property. clsObjectBindManager creates it through AddCustomValidator, and the instance dispatches validation in property, method, or object mode depending on ValidationType.
Purpose¶
- Let pages register validation work that does not fit a normal control-to-property binder.
- Reuse the manager's aggregation, formatting, and first-error tracking pipeline for custom validation scenarios.
- Dispatch validation through property delegates, method delegates, or whole-object
IsValidchecks from one binder implementation.
Context¶
- Namespace:
SAIF.Presentation.Web.Binding - Assembly/package:
SAIF.Presentation.Web.Binding.Infragistics103(embedded/bundled as source, not independently packaged)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| ValidationType | Public Property ValidationType() As CustomValidationType |
Chooses whether validation runs in Property, Method, or Object mode. |
| BindProperty | Public Property BindProperty() As String |
Identifies the property name passed to a property-level validator. |
| BindSource | Public Property BindSource() As Object |
Supplies the target object being validated and also becomes the validation source used by the base class. |
| MethodValidationDelegate | Public Property MethodValidationDelegate() As CustomValidator |
Supplies the delegate invoked for method-level validation. |
| PropertyValidationDelegate | Public Property PropertyValidationDelegate() As PropertyValidator |
Supplies the delegate invoked for property-level validation. |
| Init | Public Overrides Sub Init() |
Forces the binder into ValidateOnly mode so it participates in validation without normal value transfer. |
| PerformValidation | Protected Friend Overrides Function PerformValidation() As Boolean |
Executes the selected Property, Method, or Object validation path and updates the error state. |
| ObjectToControl | Public Overrides Function ObjectToControl() As Boolean |
Returns success without changing a control because this validator has no outbound binding role. |
| ControlToObject | Protected Friend Overrides Sub ControlToObject() |
Performs no inbound transfer because validation, not value synchronization, is this type's responsibility. |
Inherited public members¶
Members in this section are inherited from clsObjectBinderBase in SAIF.Presentation.Web.Binding.Infragistics103. They are available on this type through inheritance.
| Member | Signature | Purpose | Origin |
|---|---|---|---|
| ContainsError | ReadOnly Property, Boolean |
Set by GetErrors()/validation processing; when true, Validate()/RefreshValidation() counts this binder toward the overall invalid result and its control receives error-state CSS via SetControlFormat(). | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| IsDualBinding | ReadOnly Property, Boolean |
When true, ObjectToControl()/ControlToObject() read and write the display object/property while GetErrors() checks a separate validation object/property, as configured by AddDualBinder(). | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ControlPadding | Property, PadArgs |
When UsePadding is enabled, pads or trims the value written to the control during ObjectToControl(), so fixed-width display formatting is applied without changing the underlying object value. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ObjectPadding | Property, PadArgs |
When UsePadding is enabled, pads or strips padding from the value written back to the bound property during ControlToObject(), so stored data is not polluted with display-only padding characters. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| UsePadding | Property, Boolean |
Enables the ControlPadding/ObjectPadding transforms during ObjectToControl()/ControlToObject(); when false, values pass through unpadded regardless of the padding arguments configured. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| UseEvents | Property, Boolean |
When true, Init() wires the control's native change event so a user edit immediately calls ControlToObject() instead of waiting for an explicit BindToObject()/Validate() call. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ControlErrors | ReadOnly Property, ArrayList |
Holds the error text GetErrors() collects from the bound object's IDataErrorInfo implementation; Validate() aggregates these strings into the consolidated ErrorLabel/SAIFMessage output. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| BindType | Property, BindTypes |
Determines which of ObjectToControl()/ControlToObject() actually run during DataBind()/BindToObject(), controlling whether this binder is push-only, pull-only, both, or validation-only. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| FormControl | Property, WebControl |
Setting this property runs ProcessControl, which applies binder-specific control setup (event wiring readiness, CSS baseline) before the control participates in binding and validation passes. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| FormControlID | ReadOnly Property, String |
Supplied to Update() and error-focus logic to locate this binder's control instance on the page without holding a direct control reference. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| Init() | MustOverride Sub |
Called once during AddBinder() registration; each concrete binder overrides this to hook the native control event needed for event-driven ControlToObject() and to perform any control-specific setup. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ObjectToControl() | MustOverride Function, Boolean |
Invoked by DataBind() for binders configured as ObjectToControl/TwoWay; each concrete binder overrides this to translate the bound property's value into the control-specific display state. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ControlToObject() | MustOverride Sub, Protected Friend |
Invoked by BindToObject() for binders configured as ControlToObject/TwoWay; each concrete binder overrides this to convert the control's current value back into the bound property's type. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| SetControlFormat(inValid As Boolean) | Overridable Sub |
Called by Validate()/RefreshValidation() after error collection; sets the control's CssClass to the valid/error color per BR-BIND-001, BR-BIND-002, and BR-BIND-003, giving the reader a visual cue of validation state. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| GetErrors() | Overridable Sub |
Reads the bound object's IDataErrorInfo.Item(property) during Validate()/RefreshValidation() and appends any non-empty message to ControlErrors, driving both ContainsError and the consolidated error display. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| GetObjectValueAsString | Function |
Used by ObjectToControl() to fetch the bound property's current value as display-ready text, applying ObjectPadding/ControlPadding first when UsePadding is enabled. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| GetObjectValue | Function |
Used by ObjectToControl() and type-sensitive binders to fetch the bound property's value in its native CLR type, before any control-specific conversion or formatting. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| SetObjectValueAsString | Protected Function |
Used by ControlToObject() to write a control-derived string back onto the bound property, applying padding/trim rules first when UsePadding is enabled, so the object receives a correctly formatted value. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| SetObjectValue | Protected Function |
Used by ControlToObject() to write a converted, strongly typed value back onto the bound property, bypassing string formatting for binders that perform their own type conversion. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| ValidationKey | ReadOnly Property, String |
Computed by AddBinder() to key the bound object into m_ValidationObjects per BR-BIND-006, ensuring repeated Validate() passes re-check the correct distinct object. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
| IsSAIFFrameWorkObject | ReadOnly Property, Boolean |
Used by Validate()/GetErrors() to decide whether the bound object exposes IsValid/IDataErrorInfo semantics consistent with the SAIF business-object framework, gating which error-harvesting path is taken. | SAIF.Presentation.Web.Binding.Infragistics103 — clsObjectBinderBase |
Behavioral notes¶
- In Property mode,
PerformValidation()invokesPropertyValidationDelegatewith the bound source object, property name, andControlErrorscollection. - In Method mode,
PerformValidation()invokesMethodValidationDelegate(Me)and sets the binder error flag when the delegate returnsFalse. - In Object mode,
PerformValidation()looks for anIsValidproperty on SAIF framework objects and returns that Boolean result to the manager. BindSourcealso sets the base validation source, so manager-side validation tracking uses the same object identity and BR-BIND-006 behavior as ordinary binders.
Constraints and usage notes¶
Init()forcesBindType = ValidateOnly, so this binder is not used for normal object-to-control or control-to-object transfer.- Property and method modes require the caller to supply the corresponding delegate; the binder does not synthesize validation logic on its own.
- Object mode relies on the target exposing an
IsValidproperty and being recognized as a SAIF framework object by the inherited base-class check.
Sources¶
SAIF.Presentation.Web.Binding.Infragistics103\clsCustomValidator.vbSAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb