---
title: SAIF.Presentation.Web.Controls.V2 business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.V2
reference_type: package
---

# SAIF.Presentation.Web.Controls.V2 business rules

This library contains only **UI/presentation-convention rules** (client-side rendering conventions enforced in code), not domain business rules — no claim/policy/premium calculations, validations, or persistence decisions were found in this library.

## BR-V2-001: Internal clients suppress default banner/logout/feedback visibility

| Field | Value |
| --- | --- |
| **Statement** | When `AppGlobal.EnvironmentService.IsClientExternal` is false (internal/insider client), `BannerControl`/`BannerControlV2` default `m_FeedBackVisibleDefault`, `m_BannerVisibleDefault`, and `m_LogoutVisibleDefault` to `False`; external clients default them to `True`. |
| **Trigger** | Control `OnInit`. |
| **Enforcement** | `SetBannerControlDefaults()` in `Banner.vb`/`BannerControlV2.vb`. |
| **Outcome** | Internal-facing pages render without the logout/feedback banner chrome by default (overridable via the `DisplayBannerLogout`/`DisplayBannerFeedback` properties). |
| **Source** | SAIF.Presentation.Web.Controls.V2\Banner.vb, SAIF.Presentation.Web.Controls.V2\BannerControlV2.vb |

---

## BR-V2-002: Login-app suppresses logout/feedback popout behavior

| Field | Value |
| --- | --- |
| **Statement** | If the current page's virtual directory name equals `"ONLINELOGIN"`, `LoggingIn` is set true, which suppresses the logout link and changes the feedback link from a popup window to a plain link to the SAIF feedback page. |
| **Trigger** | `SetBannerControlDefaults()` executed on `OnInit`. |
| **Enforcement** | `Banner.vb`/`BannerControlV2.vb` `Render`. |
| **Outcome** | Prevents a logout/interactive-popup banner appearing on the login screen itself. |
| **Source** | SAIF.Presentation.Web.Controls.V2\Banner.vb, SAIF.Presentation.Web.Controls.V2\BannerControlV2.vb |

---

## BR-V2-003: Read-only input controls render as static images, not native controls

| Field | Value |
| --- | --- |
| **Statement** | When `[ReadOnly] = True`, `SAIFCheckBox`, `SAIFCheckBoxList`, `SAIFRadioButton`, and `SAIFRadioButtonList` render a hidden native control (to preserve ViewState) plus a static `<img>`/label combination instead of the interactive native control. |
| **Trigger** | `[ReadOnly]` property set by the host page. |
| **Enforcement** | Each control's overridden `Render`. |
| **Outcome** | Consistent "locked field" visual convention across checkbox/radio-based controls library-wide. |
| **Source** | SAIF.Presentation.Web.Controls.V2\SAIFCheckBox.vb, SAIF.Presentation.Web.Controls.V2\SAIFCheckBoxList.vb, SAIF.Presentation.Web.Controls.V2\SAIFRadioButton.vb, SAIF.Presentation.Web.Controls.V2\SAIFRadioButtonList.vb |

---

## BR-V2-004: Wildcard selection in MultiListControl is mutually exclusive with other items

| Field | Value |
| --- | --- |
| **Statement** | If the configured `WildCardItem` is selected (via checkbox or by typing matching text), all other list items become disabled/deselected; selecting/typing any other value re-enables all items. |
| **Trigger** | `CheckBoxList.SelectedIndexChanged` or `TextBox.TextChanged`. |
| **Enforcement** | `m_CheckList_SelectedIndexChanged` / `m_TextBox_TextChanged` in `MultiListControl.vb`. |
| **Outcome** | Prevents combining an "All"/wildcard selection with specific selections in the rendered semicolon-delimited text. |
| **Source** | SAIF.Presentation.Web.Controls.V2\MultiListControl.vb |

---

## BR-V2-005: Message icon is derived from message-text keywords unless explicitly overridden

| Field | Value |
| --- | --- |
| **Statement** | `SAIFMessage` auto-selects `ErrorImage`/`WarningImage`/`CompleteImage` based on `"Error:"`/`"Warning:"`/`"Complete:"`/`"changes saved."` substrings in `Text`, unless `DisplayImage` has been explicitly set by the caller. |
| **Trigger** | Control render (`RenderControl` → `SetImage`). |
| **Enforcement** | `SAIFMessage.vb`. |
| **Outcome** | Consistent status-icon semantics driven by message copy; `"Complete:"` keyword text is stripped from the displayed message. |
| **Source** | SAIF.Presentation.Web.Controls.V2\SAIFMessage.vb |

---

## BR-V2-006: SAIFTabBar tab selection is mutually exclusive in TabBar mode

| Field | Value |
| --- | --- |
| **Statement** | In `Mode = TabBarMode.TabBar`, clicking a tab deselects all other tabs before selecting the clicked tab; this exclusivity is not enforced in `WizardTabBar` mode. |
| **Trigger** | Tab `LinkButton` click. |
| **Enforcement** | `RaiseTabClickedEvent` in `SAIFTabBar.vb`. |
| **Outcome** | Only one tab can be `IsSelected = True` at a time in standard tab-bar mode. |
| **Source** | SAIF.Presentation.Web.Controls.V2\SAIFTabBar.vb |

---

## BR-V2-007: One-click submit buttons block duplicate submission

| Field | Value |
| --- | --- |
| **Statement** | `OneClickSubmit` buttons execute a client-side flag check (`OneClickOnly()`) that returns `false` (canceling the postback) if the button was already clicked once on the current page instance. |
| **Trigger** | Button `OnClientClick`. |
| **Enforcement** | `BuildClientOneClickJavascript()` in `OneClickSubmitControl.vb`, injected as `OnClientClick = "return OneClickOnly()"`. |
| **Outcome** | Prevents duplicate form submissions from a single rendered page instance. |
| **Source** | SAIF.Presentation.Web.Controls.V2\OneClickSubmitControl.vb |

## Notes
- No domain business-rule enforcement (claims/policy/premium calculations, validations, or persistence decisions) was found in this library; all rules above are UI/presentation conventions*.
- No database interactions, security/authorization enforcement, or configuration-driven behavior were found in this library.

> **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)
- [Dependencies](dependencies.md)
- [Configuration settings](configuration.md)
- [Operations and processes](operations-processes.md)
- [Control catalog](control-catalog.md)
- [API reference](api/index.md)

## Sources
- SAIF.Presentation.Web.Controls.V2\Banner.vb
- SAIF.Presentation.Web.Controls.V2\BannerControlV2.vb
- SAIF.Presentation.Web.Controls.V2\SAIFCheckBox.vb
- SAIF.Presentation.Web.Controls.V2\SAIFCheckBoxList.vb
- SAIF.Presentation.Web.Controls.V2\SAIFRadioButton.vb
- SAIF.Presentation.Web.Controls.V2\SAIFRadioButtonList.vb
- SAIF.Presentation.Web.Controls.V2\MultiListControl.vb
- SAIF.Presentation.Web.Controls.V2\SAIFMessage.vb
- SAIF.Presentation.Web.Controls.V2\SAIFTabBar.vb
- SAIF.Presentation.Web.Controls.V2\OneClickSubmitControl.vb
