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

C# 如何在MVC 3中的控制器之间传输数据?,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有两个独立的控制器表,不仅仅是动作方法 我的第一个控制器: namespace TestLokal.Controllers { public class BOUNCEController : Controller { BOUNCEDataDataContext db = new BOUNCEDataDataContext(); // // GET: /BOUNCE/ [Authorize] pub

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

我的第一个控制器:

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();
        }
    }
}
我的第二个控制器:

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; }
}
我想使用此模型将数据从第一个传输到第二个:

我的型号:

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; }
}
公共类元素模型
{
公共IEnumerable BouncerList{get;set;}
}

我怎样才能做到这一点呢?

我马上想到两件事

  • 您可以将反弹者列表作为JSON对象存储在视图中 它被发送到另一个控制器
  • 您可以使用TempData在请求之间存储它。例如:

  • 我马上想到两件事

  • 您可以将反弹者列表作为JSON对象存储在视图中 它被发送到另一个控制器
  • 您可以使用TempData在请求之间存储它。例如:

  • 您可以为此使用TempData


    请参阅(在操作方法之间传递数据)

    您可以使用TempData进行此操作


    请参阅(在操作方法之间传递数据)

    首先。。。您确定需要两个具有相同数据的独立控制器吗?依我拙见,每个控制器都应该负责处理自己的模型组。如果您需要在两个控制器中具有相同的数据,那么您是否应该创建一些基类

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

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

    首先。。。您确定需要两个具有相同数据的独立控制器吗?依我拙见,每个控制器都应该负责处理自己的模型组。如果您需要在两个控制器中具有相同的数据,那么您是否应该创建一些基类

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

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

    为此,我应该有一个控制器表。但是我在我的项目中有两个单独的控制器表。不,你会有3个控制器。基本控制器(可以标记为抽象控制器)和两个派生控制器。但若你们不能像我说的那个样改变应用程序结构中的任何东西,你们可以在会话中存储一些数据(小于5mb,这是巨大的…)。。。这是丑陋的,但可能:)为了做到这一点,我应该有一个控制器表。但是我在我的项目中有两个单独的控制器表。不,你会有3个控制器。基本控制器(可以标记为抽象控制器)和两个派生控制器。但若你们不能像我说的那个样改变应用程序结构中的任何东西,你们可以在会话中存储一些数据(小于5mb,这是巨大的…)。。。这很难看,但也有可能:)你确定TempData可以在不同的控制器工作表之间发送数据吗?看起来它只在操作方法之间发送数据。不是整个控制器。动作方法是在同一个控制器上还是在不同的控制器上并不重要。TempData只是在后台使用会话状态,但其生存期有限。您确定TempData可以在不同的控制器工作表之间发送数据吗?看起来它只在操作方法之间发送数据。不是整个控制器。动作方法是在同一个控制器上还是在不同的控制器上并不重要。TempData只是在后台使用会话状态,但生命周期有限。到目前为止,json看起来更容易,但会使用不必要的视图和操作损害项目质量。我需要一种直接访问第二个控制器工作表的方法。到目前为止,json看起来更容易,但会使用不必要的视图和操作损害项目质量。我需要一个直接的方式到我的第二个控制器表。