2017-01-08 54 views
-1

後清空我是新來的ASP和一般的編程,所以我可能做一些根本性的錯誤,但這裏有雲: 每次我返回查看我的控制器,我用在該模型控制器被清空。例如:型號返回視圖

Account acc; 

public ActionResult Index() 
{ 
    acc = new Account(accountName, password); 
    return View(acc) 
} //At this point there still is a acc object 

public ActionResult Edit(string name, string pass) 
{ 
    //Here the acc object is null 
    acc.userName = name; 
    acc.password = pass; 
} 

我的問題是如何存取權限當前正在使用的帳戶或方法來保存用去查看()

編輯1
當我試圖發送模式使用TempDate我還是encounterd同樣的問題:

Account acc; 

public ActionResult Index() 
{ 
    acc = new Account(accountName, password); 
    TempDate["account"] = acc; 
    return View(TempDate["account"]) 
} //TempDate contains 1 object 

public ActionResult Edit(string name, string pass) 
{ 
    //TempData is empty here 
    TempDate["account"].userName = name; 
    TempDate["account"].password = pass; 
    Return View("Index", TempDate["account"]); 
} 
+0

的可能的複製[什麼是存儲在asp.mvc請求之間數據的正確方法(http://stackoverflow.com/questions/15336991/what-is-correct-way-of-storing-data-between-請求式-ASP-MVC) –

回答

0

重複的尤金認爲是相當不錯的,如果你想嘗試像cookie或會話(TempData的在MVC)

如果您想要在應用程序級別上存儲數據,則可以在靜態類中維護一個集合,該集合可以按照需要存儲數據。

嘗試引用acc跨越兩個請求發生,因爲ASP.NET會爲每個請求控制器的新實例時,您可以保持應用程序級的變量還例如Does asp.net MVC have Application variables?

0

您最初的觀察。 Index的GET是一個HTTP請求; Edit的GET是一個單獨的HTTP請求。

關於你的第一次編輯的問題,TempData只有一個請求的生命週期內有效。在這種情況下,你會得到相同的結果。相反,您應該使用Session,如this answer中所述。