UpdateState在更新DataTable时自动更新

nir*_*rav 3 c# asp.net viewstate datatable

我在ViewState中分配DataTable.

public void Method1()
{    
    DataTable dt = getData(); //Gets the Data

    ViewState["dtThis"] = dt;
}
Run Code Online (Sandbox Code Playgroud)

现在当' Method2 '执行时,ViewState将被分配给DataTable.

public void Method2()
{    
    DataTable dt2 = (DataTable)ViewState["dtThis"];

    dt2.Columns.Remove("FirstName");    //Removing a column

    dt2.AcceptChanges();
}
Run Code Online (Sandbox Code Playgroud)

现在执行后方法2当我检查(数据表)的ViewState("dtThis"),其具有的DataTable DT2即使我没有指派DT2的ViewState("dtThis").(表示在ViewSate("dtThis")DataTable中删除列 - "FirstName").

知道为什么ViewState的这种行为?

以及如何维护原始ViewState?

rt2*_*800 6

您正在将数据表的引用存储到viewstate中.因此,所做的更新viewstate["dtThis"]直接影响到的原始Datatable obj method1().

保留原始视图状态数据表的一种方法是使用DataTable.Copy()创建原始副本并在该副本上操作