如何在同一控制器的功能之间共享对象?

时间:2013-12-10 09:21:13

标签: asp.net-mvc asp.net-mvc-4

我使用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来共享数据,但我不确定这是否是管理大型对象的正确方法。

2 个答案:

答案 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的数据库。