2013-01-04 4 views
3

어떻게 이것을 수행합니까? 이보기가 자동으로 생성됩니다. 예를 들어보기를 수동으로 추가 할 때 연락처보기에 Index.cshtml 파일이있는보기가 있습니다.MVC 4 : 공유보기 용 컨트롤러 만들기 _Layout.cshtml

컨트롤러 담당자에게 문의하여이보기를 수정할 수 있습니다.

public class ContactController : Controller 
{ 
    public ActionResult Index() 
    { 
     @ViewBag.Test = "this text will be used in my Contact View"; 

     return View(); 
    } 
} 

그래서 내 연락처보기에서 나는이

<p> @Viewbag.Test </p> 

같이 할 수있는 텍스트가 표시됩니다. 하지만 내 공유보기에서 _Layout.cshtml 파일에 어떻게 이것을 수행합니까? SharedController를 추가하여이 방법을 시도했지만이 방법으로 작업하지 않았습니다.

답변

2

_Layout.cshtml에 컨트롤러를 사용할 수 없습니다. 이 파일은 모든보기의 레이아웃에 사용됩니다. 예를 들어, 뷰 폴더에 _ViewStart.cshtml 파일을 보면 :

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

이 컨트롤러 액션에 의해 반환 뷰 주위의 래퍼로서 그 레이아웃을 사용하여 기본적으로 모든 컨트롤러를 알려줍니다.

귀하의 _Layout.cshtml 파일이 이미 하나의 방법에 대한 힌트 값을 채 웁니다했습니다

<head> 
    ... 
    <title>@ViewBag.Title</title> 
    ... 
</head> 

당신이 뷰에서 다음을 수행하면이의 머리/제목 섹션에서 렌더링됩니다 _Layout.cshtml 파일 :

@{ 
    @ViewBag.Title = "Home"; 
} 
+0

질문을 읽지 않았다고 생각합니다. OP는'_Layout.cshtml' 파일에서'ViewBag'에 접근하는 방법을 알고 싶어합니다. – musefan

1

당신은 _Layout위한 컨트롤러가 필요하지 않습니다. 연락처보기가 _Layout에 추가되어 전체보기를 하나 만듭니다. 따라서 Contact Controller의 ViewBag 속성을 _Layout 내부에서 사용할 수도 있습니다. _Layout은 연락처보기와 동일한 변수에 액세스 할 수 있습니다.

특히, 귀하의 예제에서 :

public class ContactController : Controller 
{ 
    public ActionResult Index() 
    { 
     @ViewBag.Test = "this text will be used in my Contact View"; 

     return View(); 
    } 
} 

ViewBag.Test 또한 _Layout에서이 연락처보기에 같은 방법으로 액세스 할 수 있습니다.