如何在MVC 3中的控制器之间传输数据?

时间:2011-10-27 10:19:47

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

我有两个独立的控制器表,而不仅仅是行动方法..

MY First Controller:

namespace TestLokal.Controllers
{
    public class BOUNCEController : Controller
    {
        BOUNCEDataDataContext db = new BOUNCEDataDataContext();

        //
        // GET: /BOUNCE/
        [Authorize]
        public ActionResult Index()
        {
            ViewData["Bouncers"] = new SelectList( db.Bouncers.Distinct(), "bouncer_id", "bouncer_name");
            return View();
        }
    }
}

MY Second Controller:

namespace TestLokal.Controllers
{
    public class DopplerController : Controller
    {
        //
        // GET: /Doppler/
        [Authorize]
        public ActionResult Index()
        {
            elementmodel dop = new elementmodel();
            ViewData["Dopplers"] = new SelectList( dop.BouncerList.Distinct(), "bouncer_id", "bouncer_name");
            return View();
        }
    }
}

我想使用这个模型将数据从第一个传输到第二个:

我的模特:

public class elementmodel
{
    public IEnumerable<Bouncers> BouncerList { get; set; }
}

我怎样才能实现这个目标?

3 个答案:

答案 0 :(得分:2)

您可以使用TempData。

参见http://msdn.microsoft.com/en-us/library/dd394711(v=vs.90).aspx(在行动方法之间传递数据)

答案 1 :(得分:2)

首先......您确定需要两个具有相同数据的独立控制器吗?在我看来,每个控制器应该负责处理他自己的模型组。如果你需要在两个控制器中拥有相同的数据,你应该创建一些基类吗?

public class MyBaseController : Controller 
{   
    //shared fields & methods for example datacontext
}

public class DopplerController : MyBaseController
{
}

public class BounceController : MyBaseController
{
}

但如果我错了,你的一个控制器只需要来自另一个控制器的工作结果,你就可以使用Coockies,Session。

答案 2 :(得分:0)

立即想到两件事。

  1. 您可以将视图中的保镖列表存储为JSON对象 将其发布到另一个控制器。
  2. 您可以使用TempData在请求之间存储它。例如:http://msdn.microsoft.com/en-us/library/dd394711.aspx