2013-11-22 1 views
2

안녕하세요 이것은 내 작업 필터입니다. 적절한 동작으로 리디렉션 할 화면 크기를 감지해야합니다. 어떻게 할 수 있습니까 ??asp.net MVC4 : 필터에서 화면 너비를 감지하는 방법 동작?

public sealed class DetectViewFilterAttribute : ActionFilterAttribute 
     { 
      private readonly IRegistrationConfiguration _registrationConfiguration; 
      public DetectViewFilterAttribute() 
      { 
       _registrationConfiguration = DependencyResolver.Current.GetService<IRegistrationConfiguration>(); 
      } 
      public override void OnActionExecuting(ActionExecutingContext filterContext) 
      { 
       bool isMobile = false; 
       string userAgent = HttpContext.Current.Request.UserAgent.ToLower(); 
       Regex mobileDetectionRegularExpression = new Regex(_registrationConfiguration.DetectMobileRegularExpression); 

       isMobile = mobileDetectionRegularExpression.IsMatch(userAgent); 
       if (isMobile) 
       { 
        String url; 
        UrlHelper helper = new UrlHelper(filterContext.RequestContext); 

         // TODO **if width de device between 300 and 600 px* 
         url = helper.Action("Mobile","Inscription"); 
         else 
         url = helper.Action("Tablette","Inscription"); 

          HttpContext.Current.Response.Redirect(url); 

       } 
       base.OnActionExecuting(filterContext); 
      } 

} 슬프게도

+0

마케팅 서비스 here 모바일 및했던 Tablette에 대한 두 개의 서로 다른보기를 만들기 위해 부탁드립니다. 장치에서 클라이언트 측 브라우저 너비를 감지해야합니다. – user1428798

답변

2

서버 측에서 화면 크기를 알 수는 없지만 사용자 에이전트를 알면 태블릿, PC 또는 스마트 폰임을 알 수 있습니다. 그러면 어떤 뷰를 표시할지 결정할 수 있습니다.

당신이 MVC4를 사용하는 것처럼 ... 그것은이 글 읽는 것이 현명하다 :이 동작은 ASP에 내장되어 있습니다로 ... http://www.hanselman.com/blog/MakingASwitchableDesktopAndMobileSiteWithASPNETMVC4AndJQueryMobile.aspx

이 방법, 당신은 바퀴를 다시 발명하지 않습니다를. net MVC 프레임 워크.

0

, 당신은 서버 측 코드 형 클라이언트 화면 폭을 감지 할 수 없습니다. 서버에 클라이언트의 정확한 크기에 대한 정보를 보내려면 클라이언트 측 (아마도 Javascript)에 뭔가가 필요합니다. 페이지가 먼저로드 된 다음 해당 정보를 서버로 보내야만 서버가 반응 할 수 있기 때문에 사용자 경험에 다소 어려움이 있습니다. 그래서 사용자 에이전트 스니핑은 각 요청에 대해 정보가 서버로 전송 된 이후로 많은 시간 동안 사용됩니다.

@Murali는 CSS 미디어 쿼리를 사용하여 서버를 포함시키지 않고도 클라이언트 너비에 따라 다른 CSS 규칙을 적용 할 수있는 솔루션을 제안했습니다.

0

불행히도 서버에서는 화면의 크기를 직접 확인할 방법이 없습니다. 자바 스크립트를 사용하여 클라이언트에서만이 작업을 수행 할 수 있습니다.

그러나 .NET에는 특정 모바일 기능을 결정할 때 사용하는 파일이 있습니다. 이들은 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers에 있습니다. 그러나 화면 크기는 동일한 모바일 클라이언트에서 다를 수 있으므로 정의되지 않습니다.

0

다른 사람들이 쓴대로, 당신은 그 서버 쪽을 할 수 없습니다. 그러나 모바일 장치에만이 정보가 있으면 WURFL에 해당 정보가 있습니다 (resolution_widthresolution_height).

확인 사양

관련 문제