Add QuickGrid in .NET 11: Sorting and Paging That Live in the URL article - #26214
Conversation
|
Images automagically compressed by Calibre's image-actions ✨ Compression reduced images by 75.6%, saving 498.7 KB.
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Several accessibility, lifecycle, and documentation claims are inaccurate or contradictory.
Review effort: Balanced
Findings: 2
Open (5)
Clarify FocusOnNavigate does not handle same-path query changes · New Clarify lifecycle callback ordering and async base requirements · New Clarify that only app-owned filters are preserved · New Limit noninteractive-page claim to the primary /people page · New Remove outdated label from current QuickGrid documentation · New
What changed in this PR
Adds a Community Article explaining .NET 11 RC1 QuickGrid URL-based sorting and pagination.
Changes:
- Documents static SSR, multi-grid, provider, accessibility, and compatibility behavior.
- Adds a concise article summary.
| File | Description |
|---|---|
post.md |
Full QuickGrid URL-state article and samples. |
summary.md |
Article listing summary. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| - **`<a>` vs `<button>`.** Sort headers are true links now (they navigate), which is the right element for the job — screen readers announce "link", and open-in-new-tab works. Disabled paginator links carry `aria-disabled="true"` and `tabindex="-1"`. | ||
| - **`aria-sort`** shows up on the sorted `<th>` (`ascending`/`descending`, `none` elsewhere) and `scope="col"` on all headers — table semantics are intact. | ||
| - **Focus.** The template's `FocusOnNavigate` moves focus to `h1` on navigation, which keeps enhanced-nav clicks sane for keyboard users. |
| - **Go-live, not GA.** RC1 is production-supported under Microsoft's go-live license (window ends October 13, 2026 — plan to move to RC2/GA). .NET 11 is an **STS** release (support through November 9, 2028); .NET 10 remains **LTS** (November 14, 2028). The support windows end in the same month, so choose on features and risk, not longevity. | ||
| - **Duplicate provider calls on `?page=` requests** ([observed above](#server-side-paging-with-griditemsprovider)) — budget for it or use `Items` for small tables. See also [dotnet/aspnetcore#69381](https://github.com/dotnet/aspnetcore/issues/69381). | ||
| - **Markup breaking change.** `button.col-title` → `a.col-title` and paginator `button` → `a`. CSS selectors and Playwright/Selenium locators targeting `button` need updating; `aria-disabled` replaces `:disabled` for the disabled paginator state. | ||
| - **`Paginator.OnParametersSet` → `OnParametersSetAsync`.** Binary-compatible but behaviorally breaking for `Paginator` subclasses that overrode the sync method — they silently stop being called. |
|
|
||
| - **Static SSR works.** Sorting and paging are functional on pages with no interactivity at all — headers and the paginator are `<a>` links carrying `sort`, `direction`, and `page` query parameters. | ||
| - **The URL is the state store.** Refresh, Back/Forward, bookmarks, and "copy link" all preserve the grid state because the state is the address. | ||
| - **Your own parameters coexist.** A `[SupplyParameterFromQuery]` filter like `?country=Germany` is preserved inside QuickGrid's generated links, and vice versa. |
|
|
||
| ## The sample app | ||
|
|
||
| The sample is a Blazor Web App with **no interactivity on its pages** — the scenario that was impossible before .NET 11: |
| string Sort, Direction, Page // settable | ||
| ``` | ||
|
|
||
| > **Docs lag the RC1 rename.** The QuickGrid docs page and several preview-era blog posts still show `QueryParameterNamePrefix` and `?order=`. On RC1 that parameter doesn't exist and `order` is ignored — use `QueryParameterNameOptions` and `direction`. |
|
@salihozkara can you check once copilot findings? Later I'll review |
|
Images automagically compressed by Calibre's image-actions ✨ Compression reduced images by 8.2%, saving 10.0 KB.
1 image did not require optimisation. |
|
Images automagically compressed by Calibre's image-actions ✨ Compression reduced images by 7%, saving 5.5 KB.
3 images did not require optimisation. |


No description provided.