2013-04-08 59 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

相关问题