2012-05-08 4 views
2

사용자가 휴대 기기에서 사이트에 액세스하는지 여부에 따라 레이아웃을 동적으로 변경하려고합니다. 주제에 대해 몇 가지 질문이 있습니다.ASP.NET MVC 3에서 모바일 방문자를위한 동적 레이아웃?

  1. 일단 레이아웃이 결정되면보기를 렌더링하기 전에 변경하고 싶습니다. 즉, 중첩 된 레이아웃에 대해 "반복적으로"layout.cshtml에서 layout.mobile.cshtml으로 변경할 수있는 곳이 있습니다.

    RazorViewEngineCreateView 메서드를 재정의하는 것으로 충분합니까? masterPath 매개 변수가 필요하므로 RazorViewEngine 사용자 지정을 구현하고이 메서드를 재정의 할 수 있습니다.

  2. 두 번째 질문은 모바일 브라우저 검색에 관한 것입니다. 특정 장치에 대해서는별로 신경 쓰지 않습니다. 데스크톱과 모바일을 차별화하고자합니다. 이 경우에는 WURFL과 같은 것이 필요합니까?

    Request.Browser.ScreenPixelsWidthScreenPixelsHeigth과 같은 내용을 확인하는 것은 터무니없는가요? (대부분의 이후 사용 여부를 jQuery.mobile 될 것이다 변경 될 것하고 데이터 특성을합니다.

답변

1

이 기능은 기본으로되어 ASP.NET MVC 4 그래서 당신은 밖으로의 상자를 얻을.

당신이 ASP.NET MVC 3에서 동일한을 달성하고 NuGet 그가 제안하기 때문에 업그레이드를위한 준비가 될 수있는 방법에 대한 스콧 Hansleman blogged는 ASP.NET MVC 4

0

당신이 할 수있는 경우와 사양 호환됩니다, Darin Dimitrov가 지적한대로 ASP MVC 4를 사용하면 즉시 사용할 수 있습니다.

당신이 MVC 3에 붙어있는 경우는, 우리가 우리의 제품에 그것을 할 방법은 다음과 같습니다 구현)

2 WURFL

1)를 설치 HttpCapabilitiesProvider WURFL를 호출 장치 기능을 해결하는; 그 결과로 대문자가 해결되었습니다. isMobileBrowser라는 속성을 추가해야합니다. (wurfl은 이것을 공개합니다)

3) .NET에 사용자의 기본 기능 대신 사용자의 기능 공급자를 사용하도록 지정합니다. HttpCapabilitiesBase.BrowserCapabilitiesProvider = new YourBrowserCapabilitiesProvider (_wurflManager);

4) CustomViewEngine (RazorViewEngine 상속)을 만듭니다. FindPartialView & FindView를 재정의하십시오. 이들은 controllerContext.RequestContext.HttpContext.Request.Browser.Capabilities [ "isMobileBrowser"]를보고 적절한 이름으로 매핑해야합니다 (예 : myView.cshtml.mobile). viewName과 masterName을 모두 해결해야합니다. 012/View/{0}/{1} and ~/Views/Shared/{0}/{1} 여기서 {0}은 컨트롤러 (controllerContext)입니다. RouteData.GetRequiredString ("controller")) 및 {1}은 매핑 된 뷰 이름입니다.

4.2) 반환 새 반환 ViewEngineResult (CreateView (controllerPath, viewPath, masterPath), this);

관련 문제