2013-04-08 29 views
0

情景:用戶成功登錄後,我想要創建一個Account對象(Account類是我的模型的一部分)並獲取用戶信息並將其存儲在其中。我希望這個Account對象可以被我的所有控制器(HomeController,AccountController等)訪問,並且我希望能夠從任何控制器中編輯它的內容。 (1)我如何實現這種情況? (2)如何將模型對象從一個控制器傳遞到另一個控制器?如何跨多個控制器使用模型對象?

+0

你打算把它和後來在另一個請求中使用它?或者只是在(單個)請求期間使用它並傳遞它呢? – 2013-04-08 07:05:10

+0

我打算保留它直到用戶註銷。 – 2013-04-08 07:06:08

回答

0

我打算保留它,直到用戶註銷

然後你可以使用會話。但我建議不要保存很多信息。因此,例如,你有這樣的模型或實體:

public class AccountModel { 
    public int Id {get;set;} 
    public string Username {get;set;} 
    // and a whole lot more of properties 
} 

我建議你只存儲一個identifier領域,無論是IdUsername。然後,當另一個請求進來,你需要或者驗證請求或更新相同的模型,您可以:

  • 再次讀取該數據爲用戶和所有相關信息
  • 更新必要的字段
  • 將它保存在數據庫中

所以,你會做這樣的事情:

// to save it in a session after logging in 
Session["current_user_id"] = id_variable; 
// to retrieve it from session after another request comes in 
var id = (int)Session["current_user_id"]; 
// fetch from your database 
// do the necessary update 
// persist the changes 
+0

非常感謝。我會按照你的建議去做 - 使用會話來保存用戶的AccountID,然後用它從我的數據庫中提取他的詳細信息。 – 2013-04-08 07:19:23

+0

不客氣。請記住會話過期,因此請務必檢查會話項目是否爲空。 – 2013-04-08 07:20:57

0

(1)我該如何實現這種情況?

當您需要訪問它時,您可以從數據存儲中檢索帳戶模型。

(2)如何將模型對象從一個控制器傳遞到另一個控制器?

參見(1)。既然你正在從數據存儲中檢索它,你不需要傳遞它。

+0

用戶登錄後,我想創建一個Account對象並從數據庫中獲取他的詳細信息,並使用它填充帳戶對象。然後,在另一個控制器(其視圖使用戶能夠編輯其帳戶信息)中,我想將編輯保存到我之前和之後創建的SAME帳戶對象,並將更改保存到數據庫。 – 2013-04-08 07:09:56

相關問題