如何在视图状态中保存自定义的对象

此博客围绕B/S三层结构系统展开。在表现层实例化业务层对象操作时,发现该对象无法加入ViewState,提示需标记为Serializable或有特定TypeConverter。解决方案是让类实现ISerialization接口以实现序列化,并给出了实现接口部分的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:
B/S三层结构系统,在表现层实例化业务层的对象,并使用此对象执行业务规则,访问数据层。

问题:


在表现实例化一个业务对象,在操作此对象时发现它不能被加入到ViewState中,提示错误:

类型“AmmeterChg”必须标记为 Serializable 或者具有 ReferenceConverter 以外的TypeConverter,才能被放置在视图状态中。

解决方案:


通过将类实现 ISerialization 接口,使它可被序列化

实现接口部分的代码如下:

#region ISerializable 成员

protected ammeterChg(SerializationInfo info,StreamingContext context)
{
this.customer_id = info.GetString("customer_id");
this.am_id_old = info.GetString("am_id_old");
this.abc =info.GetString("abc");
this.ycbds_old = info.GetDouble("ycbds_old");
}

public void GetObjectData(System.Runtime.Serialization.SerializationInfo info,

System.Runtime.Serialization.StreamingContext context)
{

info.AddValue("customer_id",customer_id);
info.AddValue("am_id_old",am_id_old);
info.AddValue("abc",abc);
info.AddValue("ycbds_old",ycbds_old);
}


#endregion
===========================================================
customer_id,am_id_old,ycbds_old 是该类的属性的 private 变量!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值