2011-10-27 4 views
0

내가 아니라 작업 방법이 별도의 제어기 시트 ..MVC 3의 컨트롤러간에 데이터를 전송하는 방법은 무엇입니까?

있어 적이

첫 컨트롤러 :

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

난에서 데이터를 전송하고 싶어 이 모델을 사용하여 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

두 가지 일이 즉시 발생합니다.

  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 개가 아닙니다. 기본 컨트롤러 (추상으로 표시 할 수 있음)와 두 개의 컨트롤러를 파생시킵니다. 하지만 당신이 응용 프로그램 구조에서 아무것도 변경할 수 없다면 나는 당신이 몇 가지 데이터를 저장할 수 있다고 말했다 (5 메가 바이트 덜 거대한 ...) 세션에서 ... 그것은 못생긴하지만 가능 :) – TrN

관련 문제