---
title: PrefScope
summary: API reference for PrefScope.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation
reference_type: package
---

# PrefScope

`PrefScope` is the scope model that every `clsPreferences` lookup and mutator is parameterized on. It has no behavior of its own; its three members determine whether a preference is bound to a page (`PageLevel`) or shares a single, page-less storage slot (`AppLevel`, `WebLevel`), which in turn drives how `clsPreferences` derives the composite (application, page) key used to locate a `Preference` record.

## Purpose
- Distinguish page-scoped preferences from application- and web-scoped preferences so that `clsPreferences.PageKey` can resolve the correct storage slot for a given operation ([BR-PRES-008](../../business-rules.md#br-pres-008-only-pagelevel-scope-binds-to-a-page)).

## Context
- Namespace: `SAIF.Presentation`
- Assembly/package: `SAIF.Presentation` (packaged into `SAIF.BOF.Presentation.Web.Infragistics111.nuspec` as `SAIF.Presentation.Web.Infragistics111.dll`)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `AppLevel` | `PrefScope.AppLevel` | Selects application-wide scope; `PageKey` resolves to an empty string for this member, so all application-level preferences for a given application share one storage slot. |
| `PageLevel` | `PrefScope.PageLevel` | Selects page-specific scope; `PageKey` resolves to the derived page name, so each page gets its own preference record within the application. |
| `WebLevel` | `PrefScope.WebLevel` | Selects web-wide scope; like `AppLevel`, `PageKey` resolves to an empty string, so `WebLevel` and `AppLevel` preferences currently occupy the same storage slot within an application.* |

## Behavioral notes
- `AppLevel` and `WebLevel` are functionally indistinguishable in the current implementation — both resolve to an empty page key and therefore address the same underlying `Preference` record for a given application.*

## Constraints and usage notes
- Callers that need page-specific preference isolation must pass `PrefScope.PageLevel` explicitly, or rely on the default scope used by the single-argument `Item` and `Add` overloads (which is `PageLevel`).

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

## Sources
- `SAIF.Presentation/clsPreferences.vb`
