我使用asp MVC 4.我有一个控制器,我想在他的功能之间共享相同的对象。我想过一个数据成员,但它不起作用。这是我的代码:
public class MyController : Controller
{
public MyObject obj;
public ActionResult Index()
{
obj = new MyObject();
this.obj.GetData(); // Fill my object
return View();
}
public ActionResult MyFunction()
{
Console.Write(this.obj); // Always null
return View();
}
}
是否可以在功能之间保留此对象?我曾经创建TempData
ou ViewBags
来共享数据,但我不确定这是否是管理大型对象的正确方法。
答案 0 :(得分:2)
它是null因为MVC框架创建一个新的控制器来处理不同的请求,因此obj也是不同的。
如果你制作了Object单例或者只是将它设为静态,它就可以工作。
public static MyObject obj;
答案 1 :(得分:0)
试试这个:
public class MyController : Controller
{
public MyObject obj = new MyObject();
public ActionResult Index()
{
this.obj.GetData(); // Fill my object
return View();
}
public ActionResult MyFunction()
{
Console.Write(this.obj); // Always null
return View();
}
}
这将停止null
错误。
如果要在回发之间保存数据,则需要查看持久性数据存储,例如基于SQL的数据库。