序列化视图模型出错:"Type 'System.Web.HttpPostedFileWrapper
本文关键字:System Web HttpPostedFileWrapper Type quot 视图 模型 出错 序列化 | 更新日期: 2023-09-27 17:51:22
这是我的视图模型:
[Serializable]
public class MyViewModel
{
public int VendorId { get; set; }
public HttpPostedFileBase SpreadsheetFile { get; set; }
public IEnumerable<Vendor> Vendors { get; set; }
}
我正在用数据加载我的视图模型并将其传递给视图并序列化它:
@Html.Serialize("MyModel", myViewModel)
但是我得到了这个错误
类型的包含。HttpPostedFileWrapper'不能被序列化。考虑用DataContractAttribute属性标记它,并用DataMemberAttribute属性标记您想要序列化的所有成员。如果类型是一个集合,请考虑使用CollectionDataContractAttribute标记它。有关其他支持的类型,请参阅Microsoft . net Framework文档。
我不知道如何用DataContractAttribute标记一些东西。是否有一种方法来标记HttpPostedFileBase属性为不可序列化?
尝试标记为NonSerialized
[Serializable]
public class MyViewModel
{
public int VendorId { get; set; }
[NonSerialized]
public HttpPostedFileBase SpreadsheetFile { get; set; }
public IEnumerable<Vendor> Vendors { get; set; }
}
将SpreadsheetFile更改为带有支持字段的属性,并将支持字段标记为NonSerialized
[NonSerialized]
private HttpPostedFileBase _spreadSheetFile;
public HttpPostedFileBase SpreadsheetFile {
get { return _spreadSheetFile; }
set { _spreadSheetFile = value; }
}
序列化器将尊重后备字段上的属性。即使是自动实现的属性也有一个由编译器生成的支持字段。序列化器使用后备字段,而不是属性。