---
title: SAIFAJAXControlAncestor
summary: API reference for SAIFAJAXControlAncestor.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.AJAX.Infragistics111
reference_type: package
---

# SAIFAJAXControlAncestor

`SAIFAJAXControlAncestor` is the shared root of every visual control in this library — auto-binding editors, hover-help controls, and the grid customizer all inherit from it. It centralizes access to the hosting page's bindable `Model` (relied on by [BindingManager](BindingManager.md) and [AutoBindControlAncestor](AutoBindControlAncestor.md)) and a browser feature test used by controls that need Firefox-specific rendering paths.

## Purpose
- Resolves the hosting page's `Model` property once as `RootObject`, giving every descendant control a single, consistent way to reach the bound model without duplicating reflection logic. ([BR-AJAX-001](../../business-rules.md#br-ajax-001-bindable-root-object-is-the-pages-model-property))
- Provides an `IsFirefox` browser test intended to let descendants branch rendering for Firefox, although no descendant currently calls it.*

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2.AJAX`
- Assembly/package: `SAIF.Presentation.Web.Controls.AJAX.Infragistics111` (packaged in `SAIF.BOF.Presentation.Web.Infragistics111`)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `RootObject` | `ReadOnly Property RootObject As Object` | The hosting page's `Model` property value, resolved by reflection via `BindingUtility.GetObjectValue(Page, "Model")` |
| `IsFirefox` | `ReadOnly Property IsFirefox As Boolean` | Browser-capability test for the current request; defined but never invoked by any descendant in this library* |

<!-- SELF-CONTAINMENT: base type is System.Web.UI.WebControls.CompositeControl (.NET Framework, not part of this repository's doc set), so no Inherited public members section is produced. -->

## Behavioral notes
- This class is `MustInherit` — it is never instantiated directly; it exists solely to give every descendant a common `Model`-resolution path and browser test.
- `RootObject` is resolved through the same reflection helper (`BindingUtility`) used throughout the binding stack, so a missing `Model` property on the host page silently yields `Nothing` rather than an error. ([BR-AJAX-005](../../business-rules.md#br-ajax-005-reflection-failures-during-binding-are-suppressed))

## Constraints and usage notes
- Base class: `System.Web.UI.WebControls.CompositeControl` (.NET Framework) — every control here is therefore a composite control that must implement `CreateChildControls`.
- Hosting pages must expose a property literally named `Model` for any descendant control to resolve `RootObject`. ([BR-AJAX-001](../../business-rules.md#br-ajax-001-bindable-root-object-is-the-pages-model-property))

## Related documentation
- [Index](../../index.md)
- [Overview](../../overview.md)
- [Architecture](../../architecture.md)
- [Business rules](../../business-rules.md)
- [API reference](../index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Presentation.Web.Controls.AJAX.Infragistics111/SAIFAJAXControlAncestor.vb`
