定义了一个用户类:
[Serializable()]
class c1
{
public ArrayList abc;
}然后在page_load中:
if(!IsPostBack)
{
    ViewState["asdf"]=new c1();
    ((c1)ViewState["asdf"]).abc=new ArrayList();
}刷新以后,ViewState["asdf"]不是null,但是ViewState["asdf"].abc变成了null如何解决?

解决方案 »

  1.   

    肯定么?<form runat="server">
    <asp:Button id="btn" runat="server" Text="Submit" OnClick="DoSubmit" />
    </form>
    <script language="C#" runat="server">
    const string VS_KEY = "asdf";[Serializable()]
    class c1
    {
    public ArrayList abc;
    }void Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
    {
         ViewState[VS_KEY]=new c1();
         ((c1)ViewState[VS_KEY]).abc=new ArrayList();
    }
    }void DoSubmit(object sender, EventArgs e)
    {
    c1 c = (c1)ViewState[VS_KEY];
    Response.Write ((c != null) + "<BR>");
    Response.Write ((c.abc != null) + "<BR>");
    if (c.abc != null)
    Response.Write (c.abc.Count + "<BR>");
    }</script>
      

  2.   

    进来看钻石我猜ViewState只能保存顶层对象吧,里面引用对象是不能保存的
      

  3.   

    c1 objc1 = new c1();
    objc1.abc=new ArrayList();
    ViewState["asdf"] = objc1;
    c1 objc1 = (c1)ViewState["asdf"];
    Response.Write(objc1.abc);