2016-12-14 25 views
0

我想做一個web應用程序,我有一個衝突,因爲我有一個模型,我在控制器中調用,但每次我改變視圖之間使用相同的控制器的實例我的模型重置並重新獲得初始值。如何從2個不同的視圖調用變量

DataTable dt; 

public AdminUsers() 
{ 
    dt = (new Userdb()).GetUsers(); 
} 

public ActionResult Admin() 
{ 
    ... // do whatever with dt before showing the results 
    return View(this.dt); 
} 

public ActionResult Results() // dt resets with the initial values 
{ 
    return View(this.dt); 
} 

如何在修改後保留視圖之間的值?

+1

您需要在您的POST方法某處堅持它(通常是數據庫,但'Session'可能是一種選擇) –

回答

3

爲了這個目的,你可以使用Session

一樣,當你初始化它(在你的AdminUsers()例如方法)

Session["dt"] = (new Userdb()).GetUsers(); 

,然後檢索你的價值,但總是檢查是會話不爲空:

If(Session["dt"] != null) 
{ 
    DataTable myTable = (DataTable) Session["dt"]; 
    //Do whatever you need with your dt..... 
} 
-1

你可以把它變成的ViewData:

dt = (new Userdb()).GetUsers(); 
ViewData["Datable"] = dt; 
+1

然後呢? ViewData只適用於一個請求。 – CodeCaster

0

您可以使用一個Session的......會議將允許你存儲數據對於當前會話,然後ü將能夠訪問該會話內的任何視圖的數據...

Session["data"] = dt; 

然後在您的視圖訪問該屆會議上,將其轉換成數據表,並用它..

(DataTable)Session["data"]; 
0

你不應該讓dt變量的實例變量,而是在每一個動作加載和更新後的記錄,這樣你將永遠得到最新的新數據。 建議不要使用會話,因爲它會限制應用程序的可伸縮性。

此外,你應該使用POCO來傳輸數據,而不是一個DataTable