NET 5.0 ASP.NET项目调用WebGrid.GetHtml报IHtmlString未找到如何解决
问题根因
你使用的WebGrid是传统ASP.NET .NET Framework时代的组件,依赖System.Web程序集,但.NET 5属于.NET Core生态,完全移除了System.Web相关的实现,所以才会报IHtmlString找不到的错误,该问题并非NuGet包版本不匹配导致,属于组件适配体系错误。
修复方案
- 第一步:卸载当前项目中所有第三方WebGrid相关NuGet包,这类包本质是为.NET Framework适配的,无法兼容.NET 5生态。
- 第二步:根据使用场景选择.NET Core生态下的替代方案:
- 简单表格展示场景:直接用原生Razor语法手写表格即可,代码示例如下:
@model IEnumerable<你的数据实体类型> <table class="table table-bordered"> <thead> <tr> <th>@Html.DisplayNameFor(model => model.First().字段名1)</th> <th>@Html.DisplayNameFor(model => model.First().字段名2)</th> <th>操作</th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td>@Html.DisplayFor(modelItem => item.字段名1)</td> <td>@Html.DisplayFor(modelItem => item.字段名2)</td> <td> <a asp-action="Edit" asp-route-id="@item.Id">编辑</a> | <a asp-action="Details" asp-route-id="@item.Id">详情</a> | <a asp-action="Delete" asp-route-id="@item.Id">删除</a> </td> </tr> } </tbody> </table> - 需要分页、排序、筛选等复杂功能场景:使用.NET Core生态成熟的表格组件
GridMvcCore,安装对应版本的NuGet包后按文档配置即可,功能比传统WebGrid更丰富。
- 简单表格展示场景:直接用原生Razor语法手写表格即可,代码示例如下:
- 第三步:清理解决方案,删除项目根目录下的bin、obj文件夹后重新生成项目,报错即可消除。
额外注意事项
.NET 5+不再使用web.config作为全局配置文件,数据库连接字符串应该写在appsettings.json中,通过依赖注入的方式读取配置,你额外新增的web.config仅在部署到IIS时会用到部分配置,不要直接沿用.NET Framework的配置习惯。
内容的提问来源于stack exchange,提问作者TheLongLostSon
相关产品推荐
相关产品推荐

