返回视图后模型清空

时间:2017-01-08 14:06:33

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

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

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"]);
}

2 个答案:

答案 0 :(得分:0)

如果你想尝试像Cookie或Session(MVC中的TempData)那样,Eugene的重复建议非常好

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

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

答案 1 :(得分:0)

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

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