【问题标题】:Model emptied after returning view返回视图后模型清空
【发布时间】:2017-05-22 20:38:18
【问题描述】:

我是 ASP 和一般编程的新手,所以我可能在做一些根本上错误的事情,但它是这样的: 每次我在控制器中返回视图时,我在该控制器中使用的模型都会被清空。示例:

Account acc;

public ActionResult Index()
{
  acc = new Account(accountName, password);
  return View(acc)
} //At this point there still is a acc object

public ActionResult Edit(string name, string pass)
{ 
    //Here the acc object is null
    acc.userName = name;
    acc.password = pass;
}

我的问题是如何访问当前正在使用的帐户或如何保存使用 de View() 发送的模型

编辑 1
当我尝试使用 TempDate 时,我仍然遇到了同样的问题:

Account acc;

public ActionResult Index()
{
  acc = new Account(accountName, password);
  TempDate["account"] = acc;
  return View(TempDate["account"])
} //TempDate contains 1 object

public ActionResult Edit(string name, string pass)
{ 
    //TempData is empty here
    TempDate["account"].userName = name;
    TempDate["account"].password = pass;
    Return View("Index", TempDate["account"]);
}

【问题讨论】:

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

您在尝试跨两个请求引用 acc 时的初步观察发生了,因为 ASP.NET 为每个请求创建了一个新的控制器实例。 Index 的 GET 是一个 HTTP 请求; Edit 的 GET 是一个单独的 HTTP 请求。

关于您对问题的第一次编辑,TempData 仅在单个请求的生命周期内有效。在这种情况下,您将获得相同的结果。相反,您应该使用Session,如this answer 中所述。

【讨论】:

    【解决方案2】:

    如果您想尝试 Cookie 或 Session(MVC 中的 TempData)之类的东西,Eugene 的重复建议非常好

    如果您想在应用程序级别存储数据,您可以在静态类中维护一个集合,该集合可以根据需要存储数据。

    您也可以维护应用程序级别的变量,例如 Does asp.net MVC have Application variables?

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2017-06-08
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多