在控制器中仅处理内存数据

本文关键字:内存 数据 处理 控制器 | 更新日期: 2023-09-27 18:34:56

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

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

我做错了什么?

在控制器中仅处理内存数据

当您调用 return RedirectToAction("Index");时,您的应用程序会发送到浏览器 http 代码 302(重定向(,浏览器调用您的索引页。因此,您的控制器再次初始化,并再次调用其构造函数。

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

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