0

我想在 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);
}

但渲染索引上的数据保持不变。

我做错了什么?

4

1 回答 1

2

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

为了实现您想要的,您应该将用户数据保存到数据库或其他正在运行的存储中,Edit并从正在运行的存储中获取此数据Index

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

于 2013-10-11T06:47:42.740 回答