如何跨多个控制器使用Model对象?

时间:2013-04-08 07:01:09

标签: asp.net-mvc-4

SCENARIO:用户成功登录后,我想创建一个Account对象(Account类是我模型的一部分),并在其中获取并存储用户信息。我希望我的所有控制器(HomeController,AccountController等)都可以访问这个Account对象,而且我希望能够从任何控制器内部编辑其内容。 (1)如何实现这种情况? (2)如何将模型对象从一个控制器传递到另一个控制器?

2 个答案:

答案 0 :(得分:0)

  

(1)我如何实现这种情况?

您可以在需要访问时从数据存储中检索帐户模型。

  

(2)如何将模型对象从一个控制器传递到另一个控制器?

见(1)。由于您是从数据存储中检索它,因此无需传递它。

答案 1 :(得分:0)

  

我打算保留它直到用户退出

然后你可以使用session。但我建议不要保存很多信息。例如,您有这个模型或实体:

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