首页 > Linux操作系统 > Linux操作系统 > ViewState使用兼谈序列化
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkwNjc4NTIwMWRkyv4ncofW5vaWXdXRtXfXn3RYQR4=" />
protected void Button1_Click(object sender, EventArgs e)
{
Test test = ViewState["VIEW_TEST"] as Test;
if (test == null)
{
test = new Test();
}
test[-1] = TextBox1.Text;
ViewState["VIEW_TEST"] = test;
}
[SerializableAttribute]
class Test

{
private IList list;
public Test()
{
list = new ArrayList();
}
public object this[int index]
{
get
{
if (index >= list.Count)
{
return null;
}
return list[index];
}
set
{
list.Add(value);
}
}
}
[SerializableAttribute]
class Test : DataTable

{
public Test()
{
DataColumn col = new DataColumn();
col.DataType = typeof(string);
col.ColumnName = "name";
this.Columns.Add(col);
}
public object this[int index]
{
get
{
if (index >= Rows.Count)
{
return null;
}
return Rows[index]["name"];
}
set
{
DataRow row = NewRow();
row["name"] = value;
Rows.Add(row);
}
}
}
[SerializableAttribute]
class Test : DataTable, System.Runtime.Serialization.ISerializable

{
public Test()
{
DataColumn col = new DataColumn();
col.DataType = typeof(string);
col.ColumnName = "name";
this.Columns.Add(col);
}
public object this[int index]
{
get
{
if (index >= Rows.Count)
{
return null;
}
return Rows[index]["name"];
}
set
{
DataRow row = NewRow();
row["name"] = value;
Rows.Add(row);
}
}
public Test(SerializationInfo info, StreamingContext context)
{
DataColumn col = new DataColumn();
col.DataType = typeof(string);
col.ColumnName = "name";
this.Columns.Add(col);
ArrayList list = info.GetValue("list", typeof(ArrayList)) as ArrayList;
foreach (string value in list)
{
DataRow row = NewRow();
row["name"] = value;
Rows.Add(row);
}
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
ArrayList list = new ArrayList();
foreach (DataRow row in this.Rows)
{
list.Add(row["name"]);
}
info.AddValue("list", list);
}
}来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/402580/viewspace-624049/ ,如需转载,请注明出处,否则将追究法律责任。