---
title: SAIF.Presentation.Web.MVC dependencies
summary: Internal and external dependencies for this library.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.MVC
reference_type: package
---

# SAIF.Presentation.Web.MVC dependencies

## Internal dependencies

<!-- Both rows below are same-repo <ProjectReference> entries in SAIF.Presentation.Web.MVC.vbproj,
confirmed directly in the .vbproj (lines referencing ..\SAIF.Business.Menu\SAIF.Business.Menu.vbproj and ..\SAIF.Presentation\SAIF.Presentation.vbproj). Both slugs are part of this run's 9-library
documented set, so both link to their overview.md. -->

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| [SAIF.Business.Menu](../saif-business-menu/overview.md) | Project Reference | `NavigationContext` consumes `clsMenuAuthorizedItemCollection`, `clsApplicationCodeCollection`, `clsMenuCategoryCodeCollection`, `clsApplicationCode`, and `clsMenuAuthorizedItem` to build the per-user authorized-menu lookup used by `clsControllerBase.RedirectUnauthorizedUsers()` for menu-driven page authorization. |
| [SAIF.Presentation](../saif-presentation/overview.md) | Project Reference | `clsModelBase` consumes `clsPreferences` (`SAIF.Presentation.clsPreferences`) to expose a per-page/per-application `Preferences` property to concrete models. |
| SAIF.BOF.Framework (assemblies `SAIF.Framework.dll`, `SAIF.Framework.Preferences.dll`) | NuGet Package | Supplies `clsSecurityPrincipal` (authenticated identity, consumed by `SecurityCheck()`), `clsLogTrace`/`clsLogError` (diagnostic tracing and error logging/email), `clsEnvironment` (internal-address checks), `AppGlobal`/`EnvironmentService`/`EnvironmentConfigKeys` (configuration resolution), `clsConnection` (SQL Server connection helper used by `clsContext`), `clsMSOracleDataLayer`/`IDataPortalInfo` (Oracle data-portal context used by `NavigationContext`). (v1.0.20105.1) |
| SAIF.Framework.Common | NuGet Package | Referenced in the project file (`packages.config`/`.vbproj`); no directly attributable call site was found in this library's live code.* (v1.0.18145.1) |
| SAIF.HashUtil | NuGet Package | Referenced in `packages.config`/`.vbproj` only; no direct type usage found in this library's live code — likely a transitive dependency of `SAIF.BOF.Framework`.* (v1.0.18067.1) |

No other sibling libraries from this run's documented set (`SAIF.Presentation.Web.Core.Infragistics103`, `SAIF.Presentation.Web.Binding.Infragistics103`, `SAIF.Presentation.Web.Controls.V2`, `SAIF.Presentation.Web.Controls.V2.Menu`, `SAIF.Presentation.Web.Controls.Infragistics103`, `SAIF.Presentation.Web.Controls.AJAX.Infragistics103`) are referenced by `SAIF.Presentation.Web.MVC` — none of these appear as `<ProjectReference>`, `<Reference>`, or `Imports` targets in this library's own source, so they are intentionally omitted here as plain text rather than linked.

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| System.Web / System.Web.UI | BCL (framework reference) | `Page`, `UserControl`, `WebControls`, `HttpContext`, `HttpCookie` — the WebForms hosting surface for `ViewPageBase`/`ViewControlBase`. |
| System.Data / System.Data.SqlClient | BCL (framework reference) | `SqlConnection`, `SqlCommand`, `SqlDataAdapter`, `SqlParameter` — direct ADO.NET access to the SQL Server `Context` table inside `clsContext`'s private `clsContextRepository`. |
| System.Data.OracleClient | BCL (framework reference, referenced in `.vbproj`) | Declared as a project reference but no direct Oracle ADO.NET call site exists in this library's own code — Oracle access is delegated to `clsMSOracleDataLayer` (external, `SAIF.Framework.Common`) inside `NavigationContext`.* |
| System.Configuration | BCL (framework reference) | `ConfigurationManager.AppSettings` — resolves `ErrorPageName`, `TraceLogging`, `PageTraceOn`, `TraceUser`, and `EXT_VIEWSTATE_SESSION`. See [Configuration](configuration.md). |
| System.Xml | BCL (framework reference) | Referenced by the project. |
| System.Collections | BCL (framework reference) | `Hashtable`, `HybridDictionary` — used for view-data/model storage. |
| System.Diagnostics | BCL (framework reference) | `TraceSwitch`, `Trace` — page/application trace output gated by `TraceLogging`/`PageTraceOn`. |
| Microsoft.VisualBasic | BCL (framework reference) | VB runtime helpers. |
| Infragistics.WebUI.* (WebCombo, WebDataInput, WebSchedule.WebDateChooser) | Not compile-time referenced | `ViewPageBase.NavigationManager` performs `GetType.FullName` string checks (reflection only, no compile-time `Infragistics.*` assembly reference in this project) to generate control-type-specific client-focus JavaScript. |

## Dependency risks and notes
- **Direct, un-abstracted SQL Server dependency**: `clsContext`'s private `clsContextRepository` opens raw `SqlConnection`/`SqlCommand`/`SqlDataAdapter` objects against a `Context` table in the `NETFRAMEWORK` catalog, bypassing the standard BOF `IBusinessCriteria` pattern used elsewhere in SAIF. Any change to the `Context` table schema or to `clsConnection.getConnection`'s signature (defined outside this library) breaks cross-application context hand-off silently, since no rowcount/contention validation exists around the delete-then-insert or read-then-delete flows. See [Database tables](database-tables.md) and [SQL catalog](sql/index.md).
- **Indirect Oracle dependency for authorization data**: `NavigationContext` constructs a `clsMSOracleDataLayer` (via `EnvironmentConfigKeys.OracleDatabase`) to retrieve menu-authorization collections from `SAIF.Business.Menu`. This means the menu-driven authorization gate (`RedirectUnauthorizedUsers`, [BR-MVC-002](business-rules.md#br-mvc-002-menu-based-page-authorization)) depends on Oracle availability on every request that needs to (re)build `Session("navdata")`, in addition to the SQL Server dependency above — a two-database availability requirement for a single request pipeline.
- **Plain-text configuration only**: all environment-varying settings this library resolves (`NetFrameworkSqlServer`, `OracleDatabase`, the literal `policymanagement.supportemaillist` key) go through `GetConfigSetting`, not `GetSecureConfigSetting`; no secure/encrypted settings are used anywhere in this library. See [Configuration](configuration.md).
- **Unused/unattributed package references**: `SAIF.Framework.Common` and `SAIF.HashUtil` are declared as dependencies (`packages.config`/`.vbproj`) but have no confirmed call site in this library's live source — they may be transitive dependencies of `SAIF.BOF.Framework` carried over from a template project, or genuinely unused.**
- **Coarse, non-attribute-based authorization**: no `[SAIFAuthorize]` attribute, WCF `SecurityService` client, or AD `PrincipalContext`/LDAP dependency exists in this library; authorization instead depends entirely on `clsSecurityPrincipal` (external, `SAIF.BOF.Framework`) for identity and on `SAIF.Business.Menu`-backed data for page entitlement. See [Security and authorization](security-authorization.md).
- **Reverse dependents**: `SAIF.Presentation`'s `clsPreferences` is also consumed directly by `SAIF.Presentation.Web.Controls.V2.Menu` and `SAIF.Presentation.Web.Controls.AJAX.Infragistics103`, so a breaking change to `clsPreferences` has a blast radius beyond this library alone.*
- **Source-only packaging**: per the root `.nuspec`, this project's `.vb` source (not a compiled binary) is bundled into the `SAIF.BOF.Presentation.Web.Infragistics103` NuGet package; the package's compiled binary is built from `SAIF.Presentation.Web.Core.Infragistics103`, so consumers recompile this library's source alongside that compiled output.*
- **Namespace mismatch in markup**: `ViewPageBase.aspx`/`ViewControlBase.ascx` declare `Inherits="SAIF.ViewPageBase"`/`Inherits="SAIF.ViewControlBase"` (namespace `SAIF`) rather than the project's actual root namespace `SAIF.Presentation.Web.MVC`, suggesting these markup files are unused legacy scaffolding and that real markup lives in each consuming application.**

> **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.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- SAIF.Presentation.Web.MVC\clsContext.vb
- SAIF.Presentation.Web.MVC\clsOnlineContext.vb
- SAIF.Presentation.Web.MVC\clsControllerBase.vb
- SAIF.Presentation.Web.MVC\clsFactoryBase.vb
- SAIF.Presentation.Web.MVC\clsModelBase.vb
- SAIF.Presentation.Web.MVC\NavigationContext.vb
- SAIF.Presentation.Web.MVC\ViewControlBase.ascx.vb
- SAIF.Presentation.Web.MVC\ViewPageBase.aspx.vb
- SAIF.Presentation.Web.MVC\SAIF.Presentation.Web.MVC.vbproj
- SAIF.Presentation.Web.MVC\packages.config
- SAIF.Business.Menu\clsMenuAuthorizedItemCollection.vb
- SAIF.Business.Menu\clsApplicationCodeCollection.vb
- SAIF.Business.Menu\clsMenuCategoryCodeCollection.vb
- SAIF.Presentation\clsPreferences.vb
- SAIF.BOF.Presentation.Web.Infragistics103.nuspec
