Blazor 6.0 Radzen DataGrid无法访问System.Collections报错问题
Blazor 6.0使用Radzen DataGrid报无法访问System.Collections错误
问题描述
报错截图如下:
当前项目中Radzen基础简单组件可正常运行,_layout.cshtml与_imports.razor已按要求完成Radzen相关配置,参照官方OnInitialized示例编写的测试页面代码如下:
@page "/sqltest" @using data_sql.Models @using ds_admin.Data @inject TestDatabaseService dbService <h3>SqlTest</h3> @if (reports == null) { <p><em>Loading...</em></p> } else { <RadzenDataGrid Data="@reports" TItem="Report" > <Columns> <RadzenDataGridColumn TItem="Report" Property="ReportDate" Title="Report Date" /> <RadzenDataGridColumn TItem="Report" Property="Id" Title="Report Id" /> </Columns> </RadzenDataGrid> } @code { IEnumerable<Report> reports; public async Task OnInitializedAsync() { reports = await dbService.GetAcmfReportsAsync(); } }
报错原因
这个报错由两类高频问题触发:
- Radzen.Blazor包版本与.NET 6框架不匹配:5.x及以上版本的Radzen.Blazor仅支持.NET 7及以上框架,在.NET 6环境下安装后会出现基础组件可正常运行、依赖集合类型的复杂组件(如DataGrid)抛出System.Collections访问异常的问题。
- Razor编译上下文缺失系统集合命名空间引用:Razor文件的编译逻辑独立于后台C#类文件,即使后台代码默认引入了System.Collections相关命名空间,没有在
_Imports.razor或当前页面显式引入的话,Radzen组件内部解析集合绑定类型时就会找不到对应命名空间。
解决步骤
按以下顺序排查修复即可:
- 校正Nuget包版本
打开Nuget包管理器,将已安装的Radzen.Blazor包降级到适配.NET 6的4.x最新稳定版本,卸载不兼容的高版本包。 - 补全全局命名空间引用
打开项目根目录的_Imports.razor文件,添加以下两行引用:@using System.Collections @using System.Collections.Generic - 确认服务注册完整
打开Program.cs,确认已添加Radzen相关服务注册:builder.Services.AddScoped<DialogService>(); builder.Services.AddScoped<NotificationService>(); builder.Services.AddScoped<TooltipService>(); builder.Services.AddScoped<ContextMenuService>(); - 清理编译缓存
关闭开发工具,删除项目目录下的bin、obj文件夹,重新打开项目执行「清理解决方案」-「重新生成解决方案」操作,排除旧缓存导致的类型识别异常。
内容的提问来源于stack exchange,提问作者A.Rowan
相关产品推荐
相关产品推荐

