2014-06-09 2 views
0

나는 ASP.NET MVC3 프로젝트에서 작업 중입니다. 나는 내 스타일링을 위해 Twitter Bootstrap을 사용하고있다 (중요한지 확실하지 않다). 내가 가지고있는 문제는 Home 컨트롤러의 내 Index.cshtml보기가 다른 페이지 (사용자가 그가 가고 싶은 곳을 선택하면 표시되지 않는 맨 위에있는 추가 이미지 탐색)와 약간 다른 레이아웃을 가지고 있지만 이것이 문제를 일으키는 것입니다. 이 부분을 Index 뷰에서 다른 부분 뷰 _ImageNavigation.cshtml으로 옮깁니다. Home/Index.cshtml이 열렸을 때이 부분 뷰의 내용을 렌더링하고 싶습니다. @RenderBody()도 렌더링 전에 렌더링하고 싶습니다. 그래서 페이지를 얻을 수 있습니다. 나는 그것을 원해.주어진 뷰에서 html을 렌더링하는 방법 안녕하세요, 레이아웃의 RenderBody()가 트리거되었습니다.

는 지금 내 _Layout.cshtml에서 내가 가진 :

<div id="main"> 

    <div class="container-fluid"> 
     <div class="row"> 
      <div class="col-md-10">@RenderBody() </div> 
      <div class="col-md-2"> 
      //some static content 
      </div> 
     </div> 
</div> 

그래서 나는이 개 아이디어가 처음이 - 바로 같은 @RenderBody() 전에 @RenderPage("~/Views/Shared/_ImageNavigation.cshtml")를 추가 : 내가 원하는 효과를

<div class="row"> 
@RenderPage("~/Views/Shared/_ImageNavigation.cshtml") 
<div class="col-md-10">@RenderBody() </div> 

,하지만 당신로 _ImageNavigation은 내가 원하는 것이 아닌 모든 페이지에서 렌더링됩니다. 내 Home/Index.cshtml에 대해서만보고 싶습니다. 그래서 어떤 종류의 검사가 어떤보기가로드되고 올바르게 표시되는지 확인하기 위해 만들 수 있습니다. _ImageNavigation. 같은 뭔가 : 물론 위의

if (LoadingView == Home/Index.cshtml) 
    { 
    @RenderPage("~/Views/Shared/_ImageNavigation.cshtml") 
    } 

는 의사 코드가 가능하다면 나도 몰라하는 방법과 같은 검사를하는 것입니다. 또한 페이지 자체에서이를 수행 할 수있는 방법이 있는지 궁금합니다. @RenderPage("~/Views/Shared/_ImageNavigation.cshtml")을 직접 내 Home/Index.cshtml에 넣으려고했으나 코드가보기에 직접 작성되고 명시 적으로로드되지 않은 것처럼 페이지가 렌더링됩니다.

어쩌면 다른 방법이 있습니다. 이것은 꽤 표준적인 문제인 것 같지만 적절한 해결책을 찾지 못하는 것 같습니다.

답변

1

예외 수가 적을 때 섹션을 사용하고 싶습니다. 여기에 매우 simlified 예입니다

레이아웃 : 대안 탐색과

@if (IsSectionDefined("Nav")) 
{ 
    RenderSection("Nav") 
} 
else 
{ 
    <nav>default nav</nav> 
} 
@RenderBody() 

페이지 :

@section Nav 
{ 
    <nav>My alternate nav</nav> 
} 

<div>This is the body for RenderBody</div> 

당신은 Defining Default Content For A Razor Layout Section - Phil Haacked에 대한 자세한 내용을보실 수 있습니다.

+0

답변 해 주셔서 감사합니다. '@if (IsSectionDefined ("Nav"))'이 오류가 발생했습니다 :'다음 섹션이 정의되었지만 레이아웃 페이지에 렌더링되지 않았습니다. ' 'RenderSection ("Nav") 만 남겨두면이 문제가 해결됩니다. 다른 페이지를 열 때 오류가 예상되었지만 정상적으로 작동합니다. 이 문제의 원인은 무엇인지 궁금하지만 각 뷰에서 'RenderSection ("Nav") 만 사용하도록 섹션을 정의 할 의무가없는 것 같습니다. – Leron

+0

'RenderSection ("Nav", false)'를 사용할 수 있습니다. –

+0

왜, 왜 IsSectionDefined()를 사용하는 것이 좋을지 모르겠지만, RenderSection ("Nav", false)'는 죽은 노란색 화면을 발생시키지 않는 옵션입니다. 도와 주셔서 감사합니다. – Leron

관련 문제