You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server端.NET 5下NullReferenceException异常修复咨询

修复Blazor Server中DevExpress DataGrid导出功能的NullReferenceException异常

你的空引用异常根源很明确:ExportUrlInfo属性没有初始化就直接访问它的CollectionChanged事件。

看你的代码细节:

  • 私有字段exportUrlInfo已经用new ObservableCollection<Tuple<string, string>>()完成了初始化;
  • 但公开的ExportUrlInfo属性只定义了get/set方法,却没有赋值,它在OnInitializedAsync执行时还是null,所以当你尝试绑定CollectionChanged事件时,自然抛出Object reference not set to an instance of an object异常。

具体修复方案(二选一即可)

方案1:直接初始化ExportUrlInfo属性

修改属性声明,在定义时直接完成初始化,同时可以去掉冗余的私有字段:

// 直接初始化公开属性
public ObservableCollection<Tuple<string, string>> ExportUrlInfo { get; set; } = new ObservableCollection<Tuple<string, string>>();

然后在LoadOrderData方法里直接操作这个公开属性:

protected Task<LoadResult> LoadOrderData(DataSourceLoadOptionsBase options, CancellationToken cancellationToken) {
    string baseUri = NavigationManager.BaseUri.ToString();
    ExportUrlInfo.Clear();
    ExportUrlInfo.Add(Tuple.Create(options.ConvertToGetRequestUri(baseUri + "exportPdf"), "Export PDF"));
    ExportUrlInfo.Add(Tuple.Create(options.ConvertToGetRequestUri(baseUri + "exportXlsx"), "Export XLSX"));
    ExportUrlInfo.Add(Tuple.Create(options.ConvertToGetRequestUri(baseUri + "exportDocx"), "Export DOCX"));
    return Task.FromResult(DataSourceLoader.Load(AccountList, options));
}

方案2:将私有字段赋值给ExportUrlInfo属性

如果想保留私有字段的封装,就在OnInitializedAsync的最开头完成赋值,避免空引用:

protected override async Task OnInitializedAsync() {
    // 先给公开属性赋值,确保不为null
    ExportUrlInfo = exportUrlInfo;
    
    // 再执行后续业务逻辑
    AccountList = await Controller.GetAccountAsync();
    ListOfAccountTypes = new List<ComboBoxItem>() { new ComboBoxItem(0,"Dư Nợ"), new ComboBoxItem(1,"Dư Có"), new ComboBoxItem(2,"Lưỡng tính") };
    ExportUrlInfo.CollectionChanged += (s, e) => { InvokeAsync(StateHasChanged); };
}

额外检查提示

顺便确认下Controller实例是否已通过依赖注入等方式正确初始化,虽然堆栈跟踪指向CollectionChanged代码行,但如果Controller为null,await Controller.GetAccountAsync()也会触发空引用异常,提前排查可以避免后续问题。

内容的提问来源于stack exchange,提问作者Fiyaz Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:22:43