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

MultiSelectList调用Append报Value cannot be null错误,求排查解决

问题分析与解决

你遇到的Value cannot be null错误,根源在于**Items属性运行时实际为null**——虽然你用null!抑制了编译器警告,但这个属性并没有被实例化,调用Append方法时自然会因为调用者为空抛出异常。另外,MultiSelectList是不可变类型,它的Items集合是只读的,无法直接通过Append添加元素。

修复后的代码

public MultiSelectList Items { get; set; } = null!;
private void ListUploadedFiles()
{
    var uploadPath = Path.Combine(Environment.ContentRootPath, "Upload");
    if (Directory.Exists(uploadPath))
    {
        DirectoryInfo di = new DirectoryInfo(uploadPath);
        savedFiles = di.GetFiles().ToList();
        
        // 先构建SelectListItem集合
        var selectItems = new List<SelectListItem>();
        foreach (FileInfo file in savedFiles)
        {
            selectItems.Add(new SelectListItem(file.Name, file.Name, true));
        }
        
        // 用集合实例化MultiSelectList
        Items = new MultiSelectList(selectItems);
    }
    else
    {
        // 目录不存在时初始化空列表,避免后续空引用
        Items = new MultiSelectList(Enumerable.Empty<SelectListItem>());
    }
}

关键注意点

  • 必须实例化MultiSelectList:null!仅消除编译器警告,运行时属性仍为空,必须通过构造函数传入有效数据源创建实例。
  • 不可直接修改MultiSelectList的Items:它是只读集合,所有选项必须在构造时一次性传入。
  • 处理边界场景:当上传目录不存在时,初始化空的MultiSelectList,避免后续使用时触发空引用异常。

内容的提问来源于stack exchange,提问作者E Mett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:29:53