Skip to content

Commit c4ea834

Browse files
committed
Address PR review feedback round 2
- SSR validation snippet: add @code block with SupplyParameterFromForm Model and HandleValidSubmit so the sample compiles (@ilonatommy) - QuickGrid: document the EnableUrlBasedQuickGridNavigationAndSorting AppContext opt-out and the button-vs-anchor CSS implication (@dariatiurina) - Add new section for RenderFragment serialization (#66754) covering ChildContent across @rendermode boundaries; remove from filtered list (@dariatiurina) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent affa60b commit c4ea834

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

release-notes/11.0/preview/preview5/aspnetcore.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- [Blazor WebAssembly preserves server culture](#blazor-webassembly-preserves-server-culture)
1010
- [SupplyParameterFromSession for Blazor](#supplyparameterfromsession-for-blazor)
1111
- [Blazor WebAssembly templates use Gateway](#blazor-webassembly-templates-use-gateway)
12+
- [Pass child content across render mode boundaries](#pass-child-content-across-render-mode-boundaries)
1213
- [Kestrel applies trailer header timeouts](#kestrel-applies-trailer-header-timeouts)
1314
- [OpenAPI schemas better match ASP.NET Core behavior](#openapi-schemas-better-match-aspnet-core-behavior)
1415
- [Bug fixes](#bug-fixes)
@@ -26,7 +27,7 @@ Blazor SSR forms now get instant, in-browser validation feedback without a serve
2627

2728
The feature is enabled by default for all SSR forms that include the `DataAnnotationsValidator` component. Both enhanced and non-enhanced forms are supported.
2829

29-
```csharp
30+
```razor
3031
<EditForm Model="Model" Enhance FormName="registration" OnValidSubmit="HandleValidSubmit">
3132
<DataAnnotationsValidator />
3233
@@ -52,6 +53,13 @@ The feature is enabled by default for all SSR forms that include the `DataAnnota
5253
<button type="submit" id="submit-btn">Register</button>
5354
</div>
5455
</EditForm>
56+
57+
@code {
58+
[SupplyParameterFromForm]
59+
private RegistrationModel Model { get; set; } = new();
60+
61+
private void HandleValidSubmit() { }
62+
}
5563
```
5664

5765
```csharp
@@ -198,6 +206,8 @@ public class ContactModel
198206
}
199207
```
200208

209+
The URL-driven behavior is enabled by default. Apps can opt out by setting the `Microsoft.AspNetCore.Components.QuickGrid.EnableUrlBasedQuickGridNavigationAndSorting` `AppContext` switch to `false`, which restores the previous `<button>`-based pagination and sort controls. Switching the rendered element from `<button>` to `<a>` may also require CSS updates for apps that style those controls with element selectors.
210+
201211
## Blazor WebAssembly preserves server culture
202212

203213
Blazor WebAssembly apps prerendered on the server now persist the server's `CurrentCulture` and `CurrentUICulture` into component state and apply them on the client before satellite assemblies load ([dotnet/aspnetcore #63144](https://github.com/dotnet/aspnetcore/pull/63144)). The behavior is enabled by default for interactive WebAssembly components, so a prerendered page and its hydrated client render with the same culture. Apps that need the client to choose culture independently can opt out with `WebAssemblyComponentsOptions.UseCultureFromServer`.
@@ -251,6 +261,16 @@ The standalone Blazor WebAssembly template now uses `Microsoft.AspNetCore.Compon
251261
dotnet new blazorwasm -o MyBlazorApp
252262
```
253263

264+
## Pass child content across render mode boundaries
265+
266+
Components rendered with `@rendermode` can now accept `ChildContent` (and other non-generic `RenderFragment` parameters) when the content originates from a different render mode ([dotnet/aspnetcore #66754](https://github.com/dotnet/aspnetcore/pull/66754), backport of [dotnet/aspnetcore #66528](https://github.com/dotnet/aspnetcore/pull/66528)). Previously this combination threw `InvalidOperationException` because `RenderFragment` is a delegate and could not be serialized across the SSR→interactive boundary. Blazor now prerenders the fragment on the server, captures the resulting render tree, and rehydrates it inside the interactive child component.
267+
268+
```razor
269+
<MyComponent @rendermode="InteractiveServer">
270+
<p>This is ChildContent rendered as SSR and projected into the interactive component.</p>
271+
</MyComponent>
272+
```
273+
254274
## Kestrel applies trailer header timeouts
255275

256276
Kestrel now applies `RequestHeadersTimeout` to fragmented HTTP/2 and HTTP/3 trailer headers that do not finish sending the header block ([dotnet/aspnetcore #66249](https://github.com/dotnet/aspnetcore/pull/66249)). The same timeout that protects initial request headers now also prevents connections from staying open indefinitely while Kestrel waits for trailer `HEADERS` frames to complete.
@@ -283,7 +303,6 @@ Minimal API endpoints can support multiple `Produces<T>()` extension methods for
283303
Thank you [@marcominerva](https://github.com/marcominerva) for the array schema reference contribution!
284304

285305
<!-- Filtered features (significant engineering work, but too niche for release notes):
286-
- RenderFragment serialization: enables component-state plumbing for Blazor internals, but the shipped PR in this range did not expose a broad, standalone app-facing workflow.
287306
- MCP Server template transfer: Preview 4 already documented that the template ships with the SDK, and Preview 5 did not add a meaningful user-facing state change.
288307
- Runtime-async shared framework compilation: Preview 4 already documented the ASP.NET Core shared-framework runtime-async change.
289308
- Virtualize AnchorMode and server-initiated circuit pause: Preview 4 already documented these features; Preview 5 contains matching milestone/codeflow entries without new user-facing behavior.

0 commit comments

Comments
 (0)