Fix Blazor TextArea Not Updating#67088
Draft
NanthiniMahalingam wants to merge 6 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
When a <textarea> is initialized with content placed between its opening and closing tags (as per the HTML spec), and an onchange handler is wired up for two-way binding, the textarea's displayed value does not update when the component re-renders with new data — even though a sibling using a value attribute updates correctly.
Root cause
When Blazor's interactive renderer (WebAssembly/Server) processes an updateText diff edit for a <textarea>'s child text node, it only sets textNode.textContent. Browsers decouple the value property (the displayed/user-editable content) from textContent/defaultValue once the user has edited the field. So subsequent Blazor re-renders only update the defaultValue, leaving the visible value stale.
Code changes
After updating textNode.textContent, check if the text node's DOM parent is an HTMLTextAreaElement. If so, sync textarea.value = textarea.textContent in BrowserRenderer.cs
Testing
Added the Unit test for the text area not updating case. After adding the fix, text area value is updated when current page parameter changes.
Fixes #45951
Output
Before changes
Beforefix.mp4
After Changes
Afterfix.mp4