当前位置: 首页 > 知识库问答 >
问题:

序列化视图模型时出错:“无法序列化类型“System.Web.HttpPostedFileWrapper”

曾嘉福
2023-03-14

这是我的视图模型:

[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“”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。如果类型是集合,请考虑用CopyDATAcNoTractAttor标记它。见微软。其他受支持类型的NET Framework文档。

我不知道如何用DataContractAttribute标记某些内容。是否有方法将HttpPostedFileBase属性标记为不可序列化?

共有2个答案

乐正宜人
2023-03-14

将电子表格文件更改为具有支持字段的属性,并将支持字段标记为非序列化

[NonSerialized]
private HttpPostedFileBase _spreadSheetFile;
public HttpPostedFileBase SpreadsheetFile {
    get { return _spreadSheetFile; } 
    set { _spreadSheetFile = value; }
}

序列化程序将尊重后备字段上的贡品。即使是自动实现的属性也有编译器生成的后备字段。序列化程序使用后备字段,而不是属性。

徐皓君
2023-03-14

尝试标记它非序列化。

[Serializable]
public class MyViewModel
{
    public int VendorId { get; set; }

    [NonSerialized]
    public HttpPostedFileBase SpreadsheetFile { get; set; }       

    public IEnumerable<Vendor> Vendors { get; set; }        
}
 类似资料:
  • 我有一门课是这样的: 但是当我试图序列化它时,我收到一个错误,上面写着“试图序列化java.lang.class:java.lang.字符串。忘记注册一个类型适配器了吗?”。所以我创建了这个适配器: } 并登记如下: 但我还是犯了同样的错误<我做错了什么 适配器的实现看起来正常吗?

  • 我试图使用混合序列化集合,但Jackson不会保存类型信息。这是一个基本测试,说明会发生什么: 如何在第一个输出上实现输出?

  • 我需要通过(.NET Framework内置类型)。由于此类型本身无法序列化,因此我从中派生了助手类: 它严重地序列化为XML;然而,当我试图将其传递给服务调用时,我得到了System.运行时。连载。无效数据合同异常: “类型”系统。网网络信息。无法序列化PhysicalAddress“”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列

  • 序列化和反序列化的方式不同于 我已经创建了两个序列化程序 和 我用Jackson查看了序列化/反序列化映射 ,但找不到解决方案。

  • 我有一个带有Object类型属性的基类型(一段遗留代码,许多项目都使用这个基类型)。后来添加了基类型的泛型版本,将属性公开为泛型类型。 使用ServiceStack.Text序列化和反序列化泛型类型将设置基类(type object)上的属性,而不是派生类上更特定的类型。 重现错误的简单控制台应用程序如下所示: 感谢任何帮助。 基于这个答案,我通过使和从一个新的抽象基类继承来解决这个问题,如下所示

  • 我需要将包含类型为Pair的对象的列表序列化为xml 首先,我创建了一个类PairList来保存对的列表,然后我创建了一个实际的类,它表示一对两个值,key和value。 然后,我尝试序列化它: 不幸的是,我遇到了一个异常:。欢迎任何关于如何避免此异常并序列化该类的想法。 如果我选择不序列化ttype和utype字段(通过将其设置为受保护或私有),则序列化有效。我不明白为什么它不想序列化类型字段。