asp.net - ViewState 支持的属性不适用于 List<T>

标签 asp.net generics viewstate

我试图将通用列表存储在 View 状态支持的属性中,如下所示:

[Serializable]
    public class UploadedFile
    {
      public string FileName { get; set; }
      public Guid FileGuid { get; set; }
    }

    public List<UploadedFile> UploadedFiles
    {
      get
      {
        return (List<UploadedFile>) (ViewState["UploadedFiles"] ?? new List<UploadedFile>());
      }
      set
      {
        ViewState["UploadedFiles"] = value;
      }
    }

当我尝试将项目添加到列表中时,UploadedFiles.Count 保持为零:

var uploadedFile = new UploadedFile {FileName = args.FileName, FileGuid = args.FileGuid};
UploadedFiles.Add(uploadedFile); // UploadedFiles.Count == 0 here!

有人有什么想法吗?

最佳答案

当你创建初始列表时,你没有将它保存到 View 状态中,试试这个..

public List<UploadedFile> UploadedFiles     
{       
    get       
    {         
         var list = (List<UploadedFile>) (ViewState["UploadedFiles"] ?? 
             new List<UploadedFile>()); 
         ViewState["UploadedFiles"] = list;
         return list;      
    }       
    set       
    {         
        ViewState["UploadedFiles"] = value;       
    }     
} 

关于asp.net - ViewState 支持的属性不适用于 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609157/

相关文章:

javascript - 应用程序洞察记录查看的列表项?

c# - 在 C# 中对具有空值的数据库进行选择时处理空白字符串 ("") 文本框值

c# - 读取远程文件【C#】

asp.net - (ASP.NET) 项目文件必须包含 'WindowsBase, PresentationCore, PresentationFramework'

Java:用于保存不同类型基元的通用集合

asp.net - 完全删除特定页面的 ViewState

c# - ASP.NET DropDownValue 不会跨 webfarm 中的一台服务器持久保存

java - 如何将数字放入通用列表中?

c# - 类型参数的约束 - 其中 T : class

c# - .NET 中的动态控件问题