---
title: clsSAIFWebMaskEditorBinder
summary: API reference for clsSAIFWebMaskEditorBinder.
status: draft
owner: SAIF documentation team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Binding.Infragistics103
reference_type: embedded
---

# clsSAIFWebMaskEditorBinder

This binder adapts the modern Infragistics `Infragistics.Web.UI.EditorControls.WebMaskEditor` family to the SAIF object-binding pipeline, including SAIF-specific phone and tax-ID control-bind modes that are not present in the classic `WebMaskEdit` counterpart. It sits on the shared `clsObjectBinderBase` reflection and validation path, pushes object values into the editor, and optionally writes changed editor values back as soon as the control raises `ValueChanged`.

## Purpose
- Bridge SAIF-specific masked-editor semantics such as `PhoneValue` and `TaxIDValue` into the generic binder framework.
- Support both object-to-control projection and event-driven control-to-object synchronization for modern Infragistics editor controls.
- Reuse base-class validation/error collection behavior while specializing how masked values are read and written.

## 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 |
| --- | --- | --- |
| BindProperty | `Property BindProperty As String` | Names the business-object property this binder reads from and writes back to. |
| BindSource | `Property BindSource As Object` | Supplies the bound object and also becomes the validation source inspected by inherited error harvesting. |
| SAIFWebMaskEditor | `Property SAIFWebMaskEditor As WebMaskEditor` | Attaches the modern Infragistics mask editor instance and registers it as the formatted/validated control target. |
| Init() | `Overrides Sub Init()` | Wires `ValueChanged` when event-driven reverse binding is enabled for `ControlToObject` or `TwoWay` usage. |
| ObjectToControl() | `Overrides Function ObjectToControl() As Boolean` | Copies the bound property into `Text`, `Value`, `RawText`, `PhoneValue`, or `TaxIDValue` mode according to `ControlBindProperty`. |
| New() | `Sub New()` | Starts the binder in `ControlBindProperty.Value` mode so masked editor values flow through the editor's main value channel by default. |
| New(inArgs As SAIFMaskEditBindingArgs) | `Sub New(inArgs As SAIFMaskEditBindingArgs)` | Initializes the binder from the SAIF mask-editor argument bag used by manager `Add()` overloads. |

## Inherited public members
| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| ContainsError | `ReadOnly Property ContainsError As 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 IsDualBinding As 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 ControlPadding As 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 ObjectPadding As 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 UsePadding As 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 UseEvents As 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 ControlErrors As 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 BindType As 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 | `Overridable Property FormControl As 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 | `Overridable ReadOnly Property FormControlID As 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 Init()` | 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 ObjectToControl() As 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() | `Protected Friend MustOverride Sub ControlToObject()` | 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) | `Protected Friend Overridable Sub SetControlFormat(inValid As Boolean)` | Called by Validate()/RefreshValidation() after error collection; sets the control's CssClass to the valid/error color per [BR-BIND-001](../../business-rules.md#br-bind-001-error-css-suppression-for-protected-fields), [BR-BIND-002](../../business-rules.md#br-bind-002-gridlist-controls-exempt-from-cell-level-errorvalid-css), and [BR-BIND-003](../../business-rules.md#br-bind-003-multi-line-textbox-error-styling-differs-from-single-line), giving the reader a visual cue of validation state. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| GetErrors() | `Protected Friend Overridable Sub GetErrors()` | 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(inBizObject, inPropertyName) | `Function GetObjectValueAsString(inBizObject As Object, inPropertyName As String) As String` | 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(inBizObject, inPropertyName) | `Function GetObjectValue(inBizObject As Object, inPropertyName As String) As Object` | 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(inBizObject, inPropertyName, inValue) | `Protected Function SetObjectValueAsString(inBizObject As Object, inPropertyName As String, inValue As String) As Boolean` | 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(inBizObject, inPropertyName, inValue) | `Protected Function SetObjectValue(inBizObject As Object, inPropertyName As String, inValue As Object) As Boolean` | 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 | `Friend Overridable ReadOnly Property ValidationKey As String` | Computed by AddBinder() to key the bound object into m_ValidationObjects per [BR-BIND-006](../../business-rules.md#br-bind-006-validation-key-derivation-for-saif-framework-objects), ensuring repeated Validate() passes re-check the correct distinct object. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |
| IsSAIFFrameWorkObject | `Friend Overridable ReadOnly Property IsSAIFFrameWorkObject(Optional inObj As Object) As Boolean` | Detects SAIF framework objects by walking the CLR base-type chain for `clsBusinessBase`/`clsBusinessCollectionBase`. | `SAIF.Presentation.Web.Binding.Infragistics103` — `clsObjectBinderBase` |

## Behavioral notes
- `ObjectToControl()` treats `Text`, `PhoneValue`, and `TaxIDValue` as string projections, `Value` as a raw object projection, and `RawText` as the editor's unformatted text channel.
- `ControlToObject()` writes `PhoneValue` and `TaxIDValue` by reflecting those named properties from the attached editor, while `Text` and `RawText` paths both persist the editor text string.
- Unsupported control-bind-property selections during object-to-control transfer raise an `ApplicationException` instead of silently falling back.

## Constraints and usage notes
- The attached control must be a modern Infragistics `WebMaskEditor`; this binder does not target the classic `Infragistics.WebUI.WebDataInput.WebMaskEdit` control family.
- Event-driven synchronization only occurs when `UseEvents` is `True` and the binding direction includes control-to-object flow.

## Sources
- `SAIF.Presentation.Web.Binding.Infragistics103\InfragisticsControls\clsSAIFWebMaskEditorBinder.vb`
- `SAIF.Presentation.Web.Binding.Infragistics103\clsObjectBinderbase.vb`
