2011-05-16 6 views
16

내가 레이아웃, 섹션, 뷰 및 부분적인 전망에 대해 읽어 봤는데,하지만 난 정말이 예제와 같이 레이아웃에 접근하는 방법을 모른다 :MVC3 면도기로 페이지를 배치하는 방법은 무엇입니까?

enter image description here

  • 위쪽 표시 줄 : 것 그 막대기처럼 페이스 북이 맨 위에 있습니다. 나는 인증 정보와 일반 옵션 및 메뉴를 포함 할 것입니다.

  • 탐색 표시 줄 : 위치에 대한 정보가 포함되어 있으며 어디로 갈 수 있습니까? 또한 "검색" 상자.

  • 본문 : 실제 원하는 정보.

  • 사이드 바 : 본문에 포함 된 내용에 대한 관련 정보가 포함됩니다.

  • 푸터 : 저작권, 라이센스 및 내용 그런 것.

바디은 "보기", 사이드 될 것는 "제", 바닥 글은 "레이아웃"정적 HTML 것,하지만 ... 무엇 최고 것 일 것입니다 바 및 내비게이션?

위쪽 표시 줄는 아무것도와 관련이없는, 그래서 "레이아웃"에서 "부분보기"로 둘 것입니다,하지만 난 할 수 없어 그것은 내가 전화를 그렇게 할 때, 어쨌든 <body> 안에 있어야하기 때문에 그 @RenderBody()이면 렌더링해야합니다. 네비게이션과 같은 것은 몸과 어떻게 든 관련이 있지만 URL에서 정보에 따라 정보를 표시하는 외부 컨트롤로 분리하고 싶습니다.

어떻게 접근해야합니까?

UPDATE 참조하시기 바랍니다 : 질문 는 CSS와 HTML에 대한 아니라, 그것은 면도기 RenderBodyPartialView에 관하여,이 레이아웃,하지만 어떻게 그것을 수행 할 면도기 도구를 사용하는 방법에 대해 아니에요.

컨트롤러에서 결과를 반환 할 때 그림에 표시된 내용을 "본문"으로 반환하고 "사이드 바"를 섹션으로 반환하려면 맨 위의 바코드를 반복하지 않아야합니다. "View ("ChildView ")를 반환 할 때 화면이 자동으로 작성되는 방식으로"ParentView "및"Layout "에서 상속 한"ChildView "를 만드는 방법이 있습니까?

답변

10

Check MVC3 Music Store Tutorial

에서 그 가이드의 마지막 부분은 Html.RenderAction() 메소드를 이용하여 부분적인 뷰를 포함하는 레이아웃을 설계하는 방법을 설명합니다. 또한 Html.RenderSection() 메소드를 참조.

+1

좋아, 이제 귀하의 사례 덕분에 분명해집니다. @RenderBody는 태그를 렌더링하기위한 것이 아니라 주 자식 뷰를 렌더링하므로 html로 본문을 코딩하고 PartialViews를 원하는 위치에 배치하고 RenderBody를 사용하여 흰색으로 채워진 영역을 렌더링 할 수 있습니다. – vtortola

10

좋은 소식있다 면도기로 레이아웃에 대해 : ASP.NET MVC 3: Layouts with Razor.

기본적으로 구조는 다음과 같습니다.
1) _ViewStart.cshtml (레이아웃과 다른 모든 것들이 공유하는 다른 것들을 가리키게됩니다);
2) 귀하의 레이아웃이 될 .cshtml : _Layout.cshtml (Site.Master 웹 페이지와 유사).

내부 _Layout.cshtml 당신은 예를 들어 다음과 같이 당신의 HTML 레이아웃을 놓을 게요 :

<body> 
    <div id="maincontainer"> 
     <div id="topsection"> 
      <div class="topbar"> 
       <h1>Header</h1> 
       <div id="logindisplay"> 
        @Html.Partial("_LogOnPartial") 
       </div>     
      </div>    
      <div class="nav"> 
       <ul><li>Home</li></ul> 
      </div>    
     </div> 

     <div id="contentwrapper"> 
      <div id="contentcolumn"> 
       <div class="body">      
        @RenderBody() 
       </div> 
      </div> 
     </div> 

     <div id="sidebar"> 
      <b>Side bar</b> 
     </div> 

     <div id="footer">Footer</div> 

    </div> 
</body> 

, 내가 DIV "#body"내부 @RenderBody()을 넣어 너무 때 내 컨트롤러의 수익을 참조하십시오 ActionResult,이 div 만 결과로 업데이트됩니다.

관련 문제