2011-10-27 6 views
0

私は2枚の別々のコントローラシートだけでなく、アクション・メソッド..MVC 3のコントローラ間でデータを転送する方法は?

私の最初のコントローラーましました:iからの転送データをたい

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

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セカンドコントローラこのモデルを使用して1番目から2番目まで:

MYモデル:

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. あなたは他のコントローラにオフにPOSTされますJSONオブジェクト として表示して警備員のリストを格納することができます。
  2. TempDataを使用すると、リクエスト間でTempDataを格納できます。例:http://msdn.microsoft.com/en-us/library/dd394711.aspx
+0

これまでのところ、jsonは簡単に見えますが、不要なビューやアクションでプロジェクトの品質が損なわれます。私は2枚目のコントローラーシートに直接道が必要です。 –

2

ファーストを参照してください...あなたは、あなたが同じデータを持っている二つの別々のコントローラを必要と確信していますか?私の謙虚な意見では、各コントローラは自分のグループのモデルを処理する責任があります。両方のコントローラで同じデータを持つ必要がある場合は、基本クラスを作成する必要がありますか?

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

public class DopplerController : MyBaseController 
{ 
} 

public class BounceController : MyBaseController 
{ 
} 

私が間違っていて、コントローラの1つでは、別のコントローラの作業結果が必要な場合は、Coockies、Sessionを使用できます。

+0

私は1コントローラシートを持っている必要があります。しかし、私は2つの別々のコントローラシートをプロジェクトに持っています。 –

+0

あなたは3つのコントローラーを持っていません。ベースコントローラー(抽象としてマークすることができます)と2つの派生コントローラーしかし、あなたがアプリケーション構造で何かを変えることができないなら、私はあなたがいくつかのデータを保存することができたと言っています(5MB以下です...)セッションで...それは醜いですが:) – TrN