Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[release/8.0] [Blazor] Accept an HTML encoder instance from DI if ava…
…ilable (#53213) Backport of #53140 to release/8.0 /cc @javiercn # [Blazor] Accept an HTML encoder instance from DI if available Checks the DI container to see if an instance of HtmlEncoder or JavaScriptEncoder has been registered and uses that instance when present. Falls back to the default implementation if not present. This aligns Blazor behavior in this area with MVC. ## Description Blazor hardcodes the HtmlEncoder used by the app to encode strings into HTML to the default implementation. The defaults work well for English but can be too agressive in encoding characters in other alphabets, like Cyrillic, Greek, etc. or special letters within some languages (German, Spanish). This results in the text being encoded and the pages significantly increasing in size and possibly displaying incorrectly in some contexts. Fixes #47477 ## Customer Impact Customer's can't use more leaning HtmlEncoding options like in MVC/Razor pages. This can be a migration blocker from those if the app depends on this behavior. It's also a blocker if you need this, since there isn't a workaround that can be applied. ## Regression? - [ ] Yes - [X] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [ ] Medium - [X] Low The fix consists on checking in DI for the instance. ## Verification - [X] Manual (required) - [ ] Automated ```razor @{ var value = "Тест текст"; } <meta name="keywords" content="@value" /> ``` Before: `<meta name="keywords" content="Тест текст" />` After configuring a custom encoder in DI: ``` builder.Services.AddWebEncoders(encoders => { encoders.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All); }); ``` `<meta name="keywords" content="Тест текст" />` ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --------- Co-authored-by: jacalvar <jacalvar@microsoft.com>
- Loading branch information