Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Blazor] Allow null parameter values to be supplied to interactive components via enhanced page update #53317

Merged
merged 2 commits into from
Jan 12, 2024

Conversation

MackinnonBuck
Copy link
Member

Allow null parameter values to be supplied to interactive components via enhanced page update

Fixes an issue where a NullRefrenceException would be thrown if an enhanced page update supplied a null parameter to an interactive root component. This would cause the circuit to crash when using Server interactivity, and it would cause an error to be logged in the browser console when using WebAssembly interactivity.

Fixes #52434

@MackinnonBuck MackinnonBuck added the area-blazor Includes: Blazor, Razor Components label Jan 11, 2024
@MackinnonBuck MackinnonBuck requested a review from a team as a code owner January 11, 2024 23:40
Copy link
Member

@SteveSandersonMS SteveSandersonMS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly one small tweak to the E2E tests would be good, but besides that, nice!

@MackinnonBuck MackinnonBuck merged commit 711cefa into main Jan 12, 2024
23 of 26 checks passed
@MackinnonBuck MackinnonBuck deleted the mbuck/fix-null-parameters branch January 12, 2024 23:14
@ghost ghost added this to the 9.0-preview1 milestone Jan 12, 2024
MackinnonBuck added a commit that referenced this pull request Jan 12, 2024
mkArtakMSFT pushed a commit that referenced this pull request Jan 17, 2024
…components via enhanced page update (#53317) (#53342)

# Allow `null` parameter values to be supplied to interactive components via enhanced page update

Backport of #53317

Fixes an issue where a `NullRefrenceException` would be thrown if an enhanced page update supplied a `null` parameter to an interactive root component.

## Description

In .NET 8, SSR'd components can supply updated parameters to existing interactive root components. If one of those updated parameters is `null`, an exception currently gets thrown from within the framework. This causes the circuit to crash when using Server interactivity, and it would causes an error to be logged in the browser console when using WebAssembly interactivity.

This PR fixes the problem by treating `null` as a valid value for a serialized parameter that gets supplied to an interactive root component.

Fixes #52434

## Customer Impact

Without this fix, customers may encounter the unfriendly exception and have a hard time figuring out the underlying cause. We have not yet seen customer reports of the issue, but it's possible that customers have this bug in their apps without knowing it, especially since it only occurs when supplying updated parameters to existing components (not when supplying the initial set of parameters).

One workaround would be to use a different value than `null` to specify an empty parameter value, but this may not be possible in cases where the parameter gets supplied by the framework (e.g., via route value), or if the interactive root component's implementation is not under the developer's control.

## Regression?

- [ ] Yes
- [X] No

Only applicable to new scenarios in .NET 8.

## Risk

- [ ] High
- [ ] Medium
- [X] Low

The fix is straightforward and well-tested.

## Verification

- [x] Manual (required)
- [x] Automated

## Packaging changes reviewed?

- [ ] Yes
- [ ] No
- [X] N/A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-blazor Includes: Blazor, Razor Components
Projects
None yet
3 participants