未勾选支持页面视图的Razor类库如何使用Html.Raw/HtmlString?
解决未勾选“支持页面和视图”的Razor类库输出未转义HTML的问题
当使用未勾选“支持页面和视图”的Razor类库模板时,项目默认仅包含*.razor文件,且未引用Microsoft.AspNetCore.App框架,导致无法访问HtmlString、Html.Raw这类功能,同时尝试添加Microsoft.AspNetCore.App.Ref包会提示“项目不是DotNetPlatform项目”错误。以下是可行的解决办法:
方法一:使用Blazor原生的MarkupString(推荐)
Blazor本身提供了MarkupString类型,用于直接渲染未转义的HTML,无需依赖Mvc相关的HtmlHelper:
// 在组件中定义未转义的HTML内容 private MarkupString RawHtml => new MarkupString("<strong>这是未转义的HTML</strong>");
在Razor组件中直接使用:
@RawHtml
该方式是Blazor项目输出未转义HTML的标准做法,完全适配当前Razor类库的场景。
方法二:手动引用Mvc ViewFeatures程序集
如果必须使用HtmlString或Html.Raw,可以直接添加对Microsoft.AspNetCore.Mvc.ViewFeatures.dll的引用:
- 右键项目 → 添加 → 引用 → 浏览
- 导航到路径:
C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\8.0.3\ref\net8.0\Microsoft.AspNetCore.Mvc.ViewFeatures.dll(版本号根据你的.NET版本调整) - 添加引用后,即可在代码中使用
HtmlString:
using Microsoft.AspNetCore.Mvc.Rendering; private HtmlString GetRawHtml() { return new HtmlString("<em>通过HtmlString输出的未转义内容</em>"); }
注意:此方式依赖Mvc相关组件,可能会引入不必要的依赖,仅在特殊需求下使用。
关键说明
- 独立的TagHelpers和Html.Abstractions NuGet包已被弃用,所有相关功能整合至Microsoft.AspNetCore.App框架,但未勾选“支持页面和视图”的Razor类库默认不会引用该框架,因此无法直接访问。
- Microsoft.AspNetCore.App.Ref是平台引用包,仅适用于.NET平台项目(如Web应用),普通类库无法添加该引用。
内容的提问来源于stack exchange,提问作者AaronLS
相关产品推荐
相关产品推荐

