You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**What:** Full Web Forms fidelity review of all 6 M17 controls (Timer, ScriptManager, ScriptManagerProxy, UpdatePanel, UpdateProgress, Substitution) against .NET Framework 4.8 API documentation.
51
+
52
+
**Verdict: APPROVE WITH NOTES** — All 6 controls pass for PR. Four minor fidelity notes for follow-up:
53
+
54
+
1.**ScriptManager `EnablePartialRendering` default** — Web Forms defaults to `true`, Blazor stub defaults to `false` (bare bool). No functional impact (no-op stub), but fidelity gap if property is read.
55
+
2.**ScriptManager missing `Scripts` property** — Web Forms ScriptManager has a `Scripts` collection (ScriptReferenceCollection). Only ScriptManagerProxy has it in the Blazor implementation. Low-priority since ScriptManager is a no-op stub.
56
+
3.**UpdateProgress `CssClass` not rendered** — Inherits BaseStyledComponent so accepts CssClass parameter, but the .razor template doesn't apply it to the `<div>` output. Migrating `<asp:UpdateProgress CssClass="loading">` would silently drop the class.
57
+
4.**UpdateProgress non-dynamic layout style** — Renders `visibility:hidden` but Web Forms renders `display:block;visibility:hidden`. Functionally identical (div is block by default) but not byte-identical.
58
+
59
+
**What passed clean:**
60
+
- All 6 component names match Web Forms originals exactly
- ScriptManager/Proxy: correct as no-op stubs with BaseWebFormsComponent
63
+
- UpdatePanel: RenderMode (Block=div, Inline=span), UpdateMode, ChildrenAsTriggers — all correct. ChildContent instead of ContentTemplate is intentional per Blazor conventions.
- Substitution: MethodName preserved for migration, SubstitutionCallback for Blazor, no wrapper element — all correct
66
+
- All 3 enums (ScriptMode, UpdatePanelRenderMode, UpdatePanelUpdateMode) match Web Forms values exactly with correct int assignments
67
+
- ComponentCatalog properly categorizes AJAX and Migration Helper controls
68
+
- Base class choices appropriate: stubs use BaseWebFormsComponent, UpdateProgress uses BaseStyledComponent (has CssClass in WF)
69
+
70
+
**Key pattern learned:** AJAX controls split cleanly into two categories: (1) functional components that change Blazor behavior (Timer, UpdatePanel, UpdateProgress) and (2) pure migration stubs that render nothing (ScriptManager, ScriptManagerProxy, Substitution). The stub pattern is sound — accept-but-ignore properties to prevent compilation errors during migration.
**What:** Reviewed all 6 M17 controls (Timer, ScriptManager, ScriptManagerProxy, UpdatePanel, UpdateProgress, Substitution) for Web Forms fidelity against .NET Framework 4.8 API. Verdict: **APPROVE WITH NOTES** — ready to PR with 4 minor follow-up items.
4
+
5
+
**Follow-up items (non-blocking, file as issues):**
6
+
1. ScriptManager `EnablePartialRendering` should default to `true` (Web Forms default), not `false`.
7
+
2. ScriptManager should accept a `Scripts` collection property (like ScriptManagerProxy does) for full markup compatibility.
8
+
3. UpdateProgress template should render `CssClass` on the `<div>` element — currently the property is accepted but silently ignored.
9
+
4. UpdateProgress non-dynamic layout should render `style="display:block;visibility:hidden;"` to match Web Forms byte-for-byte (currently omits `display:block`).
10
+
11
+
**Why:** None of these block migration. Items 1–2 affect no-op stubs with zero runtime behavior. Items 3–4 are cosmetic HTML gaps. All can be addressed in a patch follow-up without design changes.
0 commit comments