我是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"]);
}
答案 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
。