我想在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);
}
但数据在呈现索引时保持不变。
我做错了什么?
答案 0 :(得分:2)
当您致电返回RedirectToAction("Index");
时,您的应用程序会发送到浏览器http代码302(重定向),浏览器会调用您的索引页面。所以你的控制器再次被初始化,它的构造函数再次被调用。
要实现您的目标,您应该在Edit
操作中将用户数据保存到数据库或其他存储空间,并通过Index
操作从存储中获取此数据。
此外(如果您只想在两次调用之间保存),您可以将用户数据添加到控制器类的TempData
属性,并在下次调用时使用Session
属性。