2010-11-29 5 views
4

나는이 튜토리얼을 성공으로 따라 갔다. http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspxMVC3 면도날 - 브라우저 요청에 따라 레이아웃을 변경하는 방법이 있습니까?

모바일 장치로 페이지에 액세스하면 모든 뷰가 렌더링된다. 그러나 잘못된 레이아웃 (AKA 마스터 페이지)으로 렌더링됩니다.

나는 다음과 같은 구조를 가지고, 나는 모든보기에서 다음 문을 넣어 /Views/Shared/Mobile/_Layout.cshtml /Views/Shared/_Layout.cshtml 문제가

있습니다

Layout = "~/Views/Shared/Mobile/_Layout.cshtml"; 

내 로직을 다른 레이아웃에 렌더링 할 수있는 장소가 있습니까?

는 경우 (normalAccess)는 정상 _Layout.cshtml 다른 (mobileAccess) /Mobile/_Layout.cshtml

내가 찾을 수 없습니다 렌더링 렌더링합니다.

도움 주셔서 감사합니다.

+0

FYI, Scott은이 접근법에 대한 중요한 개선 사항을 업데이트 한 항목을 게시했습니다 (아래에서 허용되는 대답은 여전히 ​​적용됨). http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx –

답변

7

가 당신은 분명히 당신이 모든 뷰

샘플 _ViewStart에 의해 사용되는 레이아웃 논리를 넣을 수 있습니다 _ViewStart.cshtml라는 \보기 폴더에 파일을 만들 수 있습니다 http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

에서 좋은 기사. cshtml은 단순히 :

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

기사는 말한다 : '를 _ViewStart.cshtml 우리가 코드를 작성할 수 있기 때문에, 우리는 선택적 단지 기본 속성 집합에 비해 우리의 레이아웃 선택 로직이 풍부한 만들 수 있습니다. 예를 들어, 사이트에 액세스하는 장치의 유형에 따라 사용하는 레이아웃 템플릿을 다양하게 만들 수 있으며 해당 장치에 대한 전화 또는 태블릿 최적화 레이아웃과 PC/랩톱 용 데스크톱 최적화 레이아웃을 사용할 수 있습니다.

이 기능을 사용하려면 약간 놀아 주어야 할 수도 있지만, 2010 년에는이 기능을 사용하기가 편리합니다.

관련 문제