昨天我正在开发我的asp.net mvc应用程序,我试图在某个控制器在范围内的某个字段中缓存一些数据。每次打开新视图时,该字段都会保持清除状态。
问题: 当您浏览由所述控制器处理的视图时,是否可以将控制器保持在范围内?
private static List<string> _listOfStrings;
[Authorize]
public ActionResult ToView1()
{
_listOfStrings = new List<String>(){"test","test2"};
var model = new Model();
return View(model);
}
[Authorize]
public ActionResult FromView1ToView2()
{
var model = new Model(_listOfStrings);
//the issue at hand is that '_listOfStrings' is not persisted.
return View(model);
}
任何人都知道这是否可行? (列表很大,所以我不希望通过模型将其发送到视图中,反之亦然)
答案 0 :(得分:2)
您需要了解ASP.NET MVC lifecycle。
简短回答:不,你不能在调用动作后销毁Controller
。详细答案:您可以将数据存储(缓存)在TempData
或Session
属性中。
答案 1 :(得分:0)
_listOfStrings是listOfStrings的另一个变量。您没有写入或读取静态字段。在您提供的代码中,甚至没有定义_listOfStrings。
使用一个静态变量,此代码将起作用。