仅使用内存中的控制器中的数据

时间:2013-10-11 06:30:09

标签: c# asp.net-mvc

我想在mvc控制器中使用一些仅有内存的数据,所以我引入了类型为_user的私有属性,它将保存当前数据表示。在控制器构造函数中,我使用一些数据启动那些私有属性。

public class UserController : Controller
{
   private User _user = null;
   private User Data()
   {  _user = new User {Id = .... ... } 
   }

   public UserController()
   {
      _user = Data();
   }
}

这很好,数据已正确填写,我已将这些初始数据(有些更改)从编辑表单正确发送到后期操作

[HttpPost]
public ActionResult Edit(User user)
{
    _user.Name = user.Name;
    _user.Pass = user.Pass;
    return redirectToAction("Index");

}

并且在索引操作上有

public ActionResult Index()
{
    return View(_user);
}

但数据在呈现索引时保持不变。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

当您致电返回RedirectToAction("Index");时,您的应用程序会发送到浏览器http代码302(重定向),浏览器会调用您的索引页面。所以你的控制器再次被初始化,它的构造函数再次被调用。

要实现您的目标,您应该在Edit操作中将用户数据保存到数据库或其他存储空间,并通过Index操作从存储中获取此数据。

此外(如果您只想在两次调用之间保存),您可以将用户数据添加到控制器类的TempData属性,并在下次调用时使用Session属性。