2011-10-27 59 views
0

我已經得到了2個獨立的控制器片不僅動作方法..如何在MVC 3中的控制器之間傳輸數據?

MY第一控制器:

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第二控制器:

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; } 
} 

我怎樣才能做到這一點?

回答

2

您可以使用TempData來做到這一點。

http://msdn.microsoft.com/en-us/library/dd394711(v=vs.90).aspx(操作方法之間傳遞數據)

+0

是否確定TempData可以在單獨的控制器表之間發送數據? 它看起來只是在動作方法之間發送數據。不是整個控制器。 –

+0

操作方法是在同一個控制器上還是在不同的控制器上。 TempData只是在會話狀態下使用,但有一個有限的生命週期。 –

+0

很高興知道!謝謝.. –

0

2件事情馬上就會浮現在腦海。

  1. 您可以將視圖中的保鏢列表作爲JSON對象 存儲,並將其從POST控件中取出。
  2. 您可以使用TempData在請求之間存儲它。例如:http://msdn.microsoft.com/en-us/library/dd394711.aspx
+0

到目前爲止json看起來更容易,但會損害不必要的意見和行動的項目質量。我需要一個直接的方式到我的第二個控制器表。 –

2

首先你...你確定你需要兩個單獨的控制器具有相同的數據?在我看來,每個控制者都應該負責處理他自己的一組模型。如果你需要在兩個控制器中都有相同的數據,也許你應該創建一些基類?

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

public class DopplerController : MyBaseController 
{ 
} 

public class BounceController : MyBaseController 
{ 
} 

但如果我錯了,你的一個控制器只需要另一個控制器的工作結果,你可以使用Coockies,Session。

+0

爲此我應該有1個控制器表。但是我在我的項目中獲得了2個獨立的控制器表單。 –

+0

不會,你會有3個控制器。基本控制器(您可以標記爲摘要)和兩個派生控制器。但是如果你不能改變app結構中的任何東西,就像我說的那樣,你可以在會話中存儲一些數據(少於5MB,這是巨大的......),這很醜陋,但可能:) – TrN

相關問題