Blazor(.NET 9.0)动态Meta标签编码不一致问题求助
解决Blazor .NET 9中Meta Title非英文字符被HTML编码的问题
问题根源:Blazor对字符串类型的HTML属性绑定默认会执行HTML编码,所以泰文这类非英文字符会被转成
แขก这种实体编码;而og:title能正常显示,大概率是渲染逻辑的特殊处理,但核心问题出在字符串绑定的自动编码机制上。解决步骤:
- 修改
MainLayout.razor.cs中MetaTitle的类型为MarkupString:public MarkupString MetaTitle { get; set; } - 赋值时直接创建
MarkupString实例,无需额外编码:this.MetaTitle = new MarkupString($"{this.WebsiteTitle} - {sBreadcrumbTitle}"); - 页面中的绑定代码保持不变即可:
<meta name="title" content="@this.MetaTitle"> <meta property="og:title" content="@this.MetaTitle">
- 修改
注意事项:
MarkupString会告知Blazor内容是安全的,不会再做编码处理,所以要确保sBreadcrumbTitle里没有恶意HTML代码,避免XSS风险。
内容的提问来源于stack exchange,提问作者user97492
相关产品推荐
相关产品推荐

