2011-12-22 2 views
2

여기에 Vdex로 제안했습니다 : https://stackoverflow.com/a/5801502/973485 그리고 그가 발견 한 RenderPartialToString 메서드를 사용했습니다.다른 컨트롤러의 문자열보기

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    public ActionResult Test() 
    { 
     string t = ViewToString.RenderPartialToString("Index", null, ControllerContext); 
     return Content(t); 
    } 
} 

을하지만 난 다른 컨트롤러에서> 색인 홈을 렌더링하려면, 내가 얻을 : 그리고는 다음과 같이 완벽하게 작동이 같이

Value cannot be null. 
Parameter name: controllerContext 

:

public class FooController : Controller 
{ 
    public ActionResult Index() 
    { 
     string t = ViewToString.RenderPartialToString("Index", null, new HomeController().ControllerContext); 
     return Content(t); 
    } 
} 

가 있는가 뷰를 다른 컨트롤러에서 문자열로 전달하는 방법은 무엇입니까? 여러 가지 방법을 시도해 보았습니다. 모두 ControllerContext에서 실패합니다. 많은 감사합니다!

업데이트 :이 작업을 수행해야하는 이유 :

내가 위젯의 전체 웹 사이트가 상상, 각 페이지에 위젯의 양이 그래서 난 내 cshtml 파일을 하드 코딩 할 수없는, 동적입니다. 그러나 그 파일에는 위젯이 인쇄물을 인쇄 할 수있는 영역이 정의되어 있습니다. 이러한 위젯을 인쇄하려면 다른 위젯을 사용할 수있는 IWidgetController 목록과 edit, new 및 view 용 ActionResult를 포함해야하는 인터페이스 sais가 필요합니다. 위젯 예제 : CalenderController, NewsController, GalleryController 등등 ... 그래서 그 영역에서 나는 각 컨트롤러의 내용을 출력해야합니다. 이제는 URLHTML도로드 할 수 있지만 내부에서 처리하는 것이 더 빠를 것 같았습니다 ... 맞습니까?

+0

foo/index의 홈 페이지로 홈 페이지를 전달하려는 경우 여기에 무언가가 누락되어 있지 않으면 경로/홈/색인으로보기 만 반환 할 수 있습니다. – davethecoder

+0

년, 저는 CMS 시스템을 구축하고 있습니다. 모든 위젯 컨트롤러를위한 인터페이스가 있어야합니다. 나는 목록을 가지고있다. 그리고 데이터베이스는 다른 영역에서 컨트롤러가 페이지에 인쇄되도록 선택합니다. – BjarkeCK

+0

보기에서 Html.RenderAction ("_ CalendarWidget", "Calendar")을 수행 할 수 없습니까? –

답변

0

이 시도 :

string t = ViewToString.RenderPartialToString("Index", null, this.ControllerContext); 

을 어쨌든, 당신은 왜 문자열로 변환해야합니까?

+0

제안 해 주셔서 감사합니다. this.ControllerContext가 작동합니다! 하지만 ControllerContext가 잘못되었으므로 HomeController의 ControllerContext 여야합니다. – BjarkeCK

+0

저는 각 위젯에 ViewWidget, EditWidget 및 newWidget ActionResults가있는 컨트롤러가있는 CMS 용 위젯 시스템을 구축하고 있습니다. – BjarkeCK

+0

@BjarkeCK, 작동하지만!, 틀렸어. **?! ** – gdoron

관련 문제