2012-06-17 3 views
1

마스터 페이지에 사용자 정의 헤더 (데이터베이스에 보관)를 삽입하려고합니다. 사용자 정의 헤더는 사용자별로 변경됩니다.렌더링 HTML MVC3의 부분 블록

컨트롤러를 부분에 연결하는 방법에 대해 약간 혼란 스럽습니다 (이 경우에도 가능합니다). 달성하고자하는 것은 특정 이벤트에서 호출 된 특정 컨트롤러의 코드 블록을 렌더링하는 것입니다.

public ActionResult GetHeader(Guid clientID) 
    { 
     string szHeader = GetTheme(ThemeType.Portal, JoloTheme.ThemeArea.Header, clientID); 
     return Content(szHeader, "text/html"); 
    } 

내가 만든 컨트롤러,하지만 난 (동일하지 컨트롤러에서) 내가 현재 쓰고있는 페이지의 하위 섹션에이 활용하는 방법을 모르겠어요.

사과가 여기에 완전히 터무니없는 경우에도 MVC를 배우는 것이 두렵습니다.

답변

2

_Layout.cshtml에 Html.Action() 헬퍼를 사용해야합니다. 항상 유효한 clientID를 제공 할 수 없기 때문에 Nullable Guid를 매개 변수로 사용해야한다고 생각합니다. 여기

public ActionResult GetHeader(Guid? clientID) 
{ 
    string szHeader = GetTheme(ThemeType.Portal, JoloTheme.ThemeArea.Header, clientID); 
    return Content(szHeader, "text/html"); 
} 

는 다행히 된 ClientID가 항상 보장 (null의 경우 디폴트 값이)되어, 당신의 _Layout.cshtml에

@Html.Action("GetHeader", 
      "SomeController", 
      new { clientID = IsLoggedIn ? ClientID : (Guid?)null }) 
+0

감사를 Html.Action 도우미를 호출하는 방법입니다. 그러나 액션이 페이지에서 렌더링 될 수 있다는 것을 알지 못했습니다. 나는 아직도 많은 독서를해야한다 : D –