Cached navdata cleared and redirect to /OnlineLogin/LoginScreen.aspx
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-008: Multi-model view state is keyed by a per-view GUID¶
Field
Value
Statement
When multi-model support is enabled, each open view has a distinct GUID view ID that keys its model and view data in session, carried across requests in the __SAIFPID hidden field/query string.
BR-MVC-009: Absolute navigation targets are preserved verbatim¶
Field
Value
Statement
A navigation target that starts with HTTP or / is used verbatim; anything else is composed as /<app>/<view>.
Trigger
Navigate
Enforcement
clsControllerBase.Navigate
Outcome
Absolute and cross-site targets are preserved
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-010: Every navigation records source/target app and view¶
Field
Value
Statement
Every navigation records source app, source view, target app, and target view in the context so the destination screen can react to where the user came from.
Trigger
Navigate
Enforcement
clsControllerBase.Navigate, consumed in CheckContext
Outcome
Destination applies the values through HandleContext and completes deferred navigation
BR-MVC-011: Context is persisted only on genuine cross-app transitions¶
Field
Value
Statement
Context is persisted to the shared store only when leaving the current application, and never when the session has already timed out; Navigate2 requires multi-model support.
Trigger
Cross-application Navigate; any Navigate2 call
Enforcement
clsControllerBase.Navigate, Navigate2
Outcome
Context rows written only for genuine cross-app transitions; ApplicationException otherwise
No spurious ThreadAbortException reaches error handling
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-013: Popup navigation uses a fixed window geometry¶
Field
Value
Statement
Popup navigation opens a fixed-geometry window (505×641 at 10,10, no menu/toolbar/scrollbars/resize by default) and focuses either the child window or the opener.
Trigger
Navigate with Popup = True
Enforcement
clsControllerBase.Navigate popup script
Outcome
Consistent popup presentation across screens
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-014: The authenticated user name is exposed via the STYPE cookie¶
Field
Value
Statement
The authenticated user name is exposed to the browser in the STYPE cookie in upper case.
Trigger
Successful SecurityCheck
Enforcement
clsControllerBase.SecurityCheck
Outcome
Client-side code can read the current user identity
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-015: Menu authorization data is read from Oracle as user MENU¶
Field
Value
Statement
Menu authorization data is read from Oracle as database user MENU using the environment's configured Oracle connection, keyed by the trimmed upper-cased user ID.
Trigger
NavigationContext construction
Enforcement
NavigationContext.New
Outcome
Authorized items reflect that user's menu grants
Source
SAIF.Presentation.Web.MVC/NavigationContext.vb
BR-MVC-016: A model initializes exactly once per instance¶
Field
Value
Statement
A model initializes exactly once per instance, and loading preferences for the user/application is part of that initialization.
Trigger
Model.Pre_Init during Initialize
Enforcement
clsModelBase.Pre_Init (m_Inited guard)
Outcome
Initialize() and clsPreferences construction happen once
Source
SAIF.Presentation.Web.MVC/clsModelBase.vb
BR-MVC-017: Cross-application context is consumed exactly once¶
Field
Value
Statement
Cross-application context is consumed exactly once: rows are deleted after retrieval, and re-saving an application's context first clears the previous rows.
BR-MVC-020: Posted control values are harvested by recognized type¶
Field
Value
Statement
On every postback the framework harvests the current value of every recognized input control on the page into a name/value map for the screen's Retrieve implementation.
Trigger
Page_Load → CallRetrieve
Enforcement
clsControllerBase.GetInControls
Outcome
Derived controllers receive posted values without per-control plumbing
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-021: Vendor/SAIF controls are recognized by type name, not assembly reference¶
Field
Value
Statement
Vendor and SAIF controls are recognized by type name and read reflectively, so the framework does not take a compile-time dependency on the vendor assemblies.
Infragistics/SAIF controls participate without an assembly reference; unknown types are ignored
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-022: Applications may self-handle exceptions¶
Field
Value
Statement
An application may handle its own exceptions by overriding HandleApplicationError and returning True, which suppresses framework error routing.
Trigger
Unhandled page exception
Enforcement
ViewPageBase.ProcessError
Outcome
Framework logging/redirect is bypassed for application-handled errors
Source
SAIF.Presentation.Web.MVC/ViewPageBase.aspx.vb
BR-MVC-023: Database timeout/unavailable errors show a retryable message¶
Field
Value
Statement
Database timeout and database-unavailable exceptions are shown to the user as retryable messages on the page and then routed to the application's default view.
Trigger
ProcessError with a clsSAIFException of the matching type
Enforcement
ViewPageBase.ProcessError
Outcome
Message control text set, error logged, navigation to Default.aspx?MSG=…
Source
SAIF.Presentation.Web.MVC/ViewPageBase.aspx.vb
BR-MVC-024: Every framework-handled error is logged and e-mailed to support¶
Field
Value
Statement
Every framework-handled error is logged and e-mailed to the configured support distribution list.
Support receives the error with model and context detail
Source
SAIF.Presentation.Web.MVC/clsControllerBase.vb
BR-MVC-025: The error page falls back by network zone when unconfigured¶
Field
Value
Statement
The error page is taken from configuration when present; otherwise internal callers get the intranet error page and external callers the public HTTPS error page.
Validation helpers treat a Nothing or whitespace-only string as invalid, a non-numeric string as an invalid number, a non-date string as an invalid date, and a date on or before today as not a future date.
Rules in this section originate from base classes or services provided by dependency framework libraries. They are enforced by inherited behavior, not by code in this library. This library does not itself derive from clsBusinessBase, but the run's library-density scan detected the clsBusinessBase base-class reference in this library's dependency chain; the rule below is recorded for cross-layer traceability with SAIF.Business.Menu, whose object model derives from clsBusinessBase. The originating class and library are recorded in the rule's Origin field.
INH-MVC-001: Business rule violations are tracked in a broken-rules collection¶
Field
Value
Statement
clsBusinessBase evaluates registered rules through a clsRulesManager and records rule failures in a broken-rules collection; validation state is surfaced through IDataErrorInfo so IsValid becomes False while broken rules exist.†
Trigger
Property changes or lifecycle methods on a business object derived from clsBusinessBase.†
Enforcement
clsRulesManager (clsBusinessBase)†
Outcome
UI/data-binding consumers observe validation errors via IDataErrorInfo until the broken-rule condition clears.†
Origin
SAIF.Framework.Core — clsBusinessBase
Source
Retrieved from indexed documentation via Legends CLI
Mark inferred statements with * and unknown statements with **. Do not use bold inline confidence labels.
Statements marked with † were retrieved from dependency library documentation via the Legends CLI RAG service.
INH-MVC-001 describes behavior owned by clsBusinessBase in SAIF.Framework.Core; it is retained here for cross-layer traceability because this library's dependency SAIF.Business.Menu derives from it. This library's own classes do not inherit from clsBusinessBase.
Note: Statements marked with † are derived from dependency library documentation via the Legends CLI. They describe inherited behavior from the indicated origin library and should be verified if the dependency version changes.