C#视图状态-无法检索表

C#视图状态-无法检索表,c#,postback,viewstate,C#,Postback,Viewstate,我有一个datatable,其中包含通过viewstate传递的文件路径(通过linkbutton引用此表中的索引),然后希望使用表中的路径来构造HTTP文件传输。(So 3列;名称、路径和索引) 在viewstate中保存后,我无法成功检索datatable ViewState["varFiles"] = filedata; (最初构建页面时,回发后:) 据我所知,这应该以与回发之前完全相同的形式将filedata作为表进行回发。这是正确的吗 当随后引用表时,我得到一个空引用异常。有什

我有一个datatable,其中包含通过viewstate传递的文件路径(通过linkbutton引用此表中的索引),然后希望使用表中的路径来构造HTTP文件传输。(So 3列;名称、路径和索引)

在viewstate中保存后,我无法成功检索datatable

   ViewState["varFiles"] = filedata;
(最初构建页面时,回发后:)

据我所知,这应该以与回发之前完全相同的形式将filedata作为表进行回发。这是正确的吗

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

非常感谢,,
Dan

听起来你差不多做到了,只是需要与使用相同的存储机制保持一致:)

数据表
保存到会话中的位,可能位于
OnInit()
PageLoad()

回发后读取数据表的位:

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

会话
!=<代码>视图状态。(检查代码以了解此观察的意义。)如果datatable存储在viewstateAh中,为什么要使用会话。谢谢大家-我从上一个示例中提取了这一点,并认为会话是从ViewState提取的一种方法。尽管切换到ViewState仍然无法解决这一问题-知道我可能做错了什么吗?为什么在回发后,即使执行此检索步骤,页面仍会将filedata视为null?尝试使用ViewData而不是ViewState只是稍微难一点:)请向上投票,如果有帮助,请接受答案。我正在尝试向上投票,但显然还没有声誉:(再次感谢您的帮助。
if (!IsPostBack)
{
    SetupSession();
    newpopfiles();
}
else
{
    DataTable filedata = Session["varFiles"] as DataTable;
    if (filedata != null)
    {
        //... do something
    }
}