C#Viewstate - 无法检索表

时间:2014-09-01 21:30:57

标签: c# postback viewstate

我有一个包含文件路径的数据表,我通过viewstate传递(引用,通过链接按钮,此表中的索引),然后想要使用表中的路径来构建HTTP文件传输。 (所以3个字母;名称,路径和索引)

一旦保存在viewstate中,我无法成功检索数据表;

   ViewState["varFiles"] = filedata;

(最初构建页面时,然后在回发后:)

if (!IsPostBack) { SetupSession(); newpopfiles(); }
    else { { if (ViewState["varFiles"] != null) { DataTable filedata = new DataTable(); filedata = (DataTable)Session["varFiles"]; } } }

根据我的理解,这应该将filedata作为一个表格以与回发之前完全相同的形式拉回来。这是对的吗?

当随后引用表时,我得到一个空引用异常。有什么想法吗?

非常感谢, 丹

1 个答案:

答案 0 :(得分:1)

听起来你几乎就在那里,只需要与使用相同的存储机制更加一致:)

DataTable保存到您的会话中的位,可能位于OnInit()PageLoad()

DataTable myDataTable = //... fill it in somehow
Session["varFiles"] = myDataTable;

回发后读取DataTable的位:

if (!IsPostBack)
{
    SetupSession();
    newpopfiles();
}
else
{
    DataTable filedata = Session["varFiles"] as DataTable;
    if (filedata != null)
    {
        //... do something
    }
}