欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

asp.net 检测访问者是iphone,android,web(摘录)

发布时间:2023/12/9 asp.net 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 asp.net 检测访问者是iphone,android,web(摘录) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

aps.net
可以使用WebFormViewEngine来实现。
参考文章:http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx
源代码

C#代码  
  • public class MobileCapableWebFormViewEngine : WebFormViewEngine   
  • {   
  •     public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)   
  •     {   
  •         ViewEngineResult result = null;   
  •         var request = controllerContext.HttpContext.Request;   
  •     
  •         //This could be replaced with a switch statement as other advanced / device specific views are created   
  •         if (UserAgentIs(controllerContext, "iPhone"))       
  •         {   
  •             result = base.FindView(controllerContext, "Mobile/iPhone/" + viewName, masterName, useCache);   
  •         }   
  •     
  •         // Avoid unnecessary checks if this device isn't suspected to be a mobile device   
  •         if (request.Browser.IsMobileDevice)   
  •         {   
  •             if (UserAgentIs(controllerContext, "MSIEMobile 6"))   
  •             {   
  •                 result = base.FindView(controllerContext, "Mobile/MobileIE6/" + viewName, masterName, useCache);   
  •             }   
  •             else if (UserAgentIs(controllerContext, "PocketIE") && request.Browser.MajorVersion >= 4)   
  •             {   
  •                 result = base.FindView(controllerContext, "Mobile/PocketIE/" + viewName, masterName, useCache);   
  •             }   
  •     
  •             //Fall back to default mobile view if no other mobile view has already been set   
  •             if ((result == null || result.View == null) &&   
  •                             request.Browser.IsMobileDevice)   
  •             {   
  •                 result = base.FindView(controllerContext, "Mobile/" + viewName, masterName, useCache);   
  •             }   
  •         }   
  •     
  •         //Fall back to desktop view if no other view has been selected   
  •         if (result == null || result.View == null)   
  •         {   
  •             result = base.FindView(controllerContext, viewName, masterName, useCache);   
  •         }   
  •     
  •         return result;   
  •     }   
  •     
  •     private bool UserAgentIs(ControllerContext controllerContext, string userAgentToTest)   
  •     {   
  •         return (controllerContext.HttpContext.Request.UserAgent.IndexOf(userAgentToTest, StringComparison.OrdinalIgnoreCase) > 0);   
  •     }   
  • }  
  • public class MobileCapableWebFormViewEngine : WebFormViewEngine {public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache){ViewEngineResult result = null;var request = controllerContext.HttpContext.Request;//This could be replaced with a switch statement as other advanced / device specific views are createdif (UserAgentIs(controllerContext, "iPhone")) {result = base.FindView(controllerContext, "Mobile/iPhone/" + viewName, masterName, useCache);}// Avoid unnecessary checks if this device isn't suspected to be a mobile deviceif (request.Browser.IsMobileDevice){if (UserAgentIs(controllerContext, "MSIEMobile 6")){result = base.FindView(controllerContext, "Mobile/MobileIE6/" + viewName, masterName, useCache);}else if (UserAgentIs(controllerContext, "PocketIE") && request.Browser.MajorVersion >= 4){result = base.FindView(controllerContext, "Mobile/PocketIE/" + viewName, masterName, useCache);}//Fall back to default mobile view if no other mobile view has already been setif ((result == null || result.View == null) &&request.Browser.IsMobileDevice){result = base.FindView(controllerContext, "Mobile/" + viewName, masterName, useCache);}}//Fall back to desktop view if no other view has been selectedif (result == null || result.View == null){result = base.FindView(controllerContext, viewName, masterName, useCache);}return result;}private bool UserAgentIs(ControllerContext controllerContext, string userAgentToTest){return (controllerContext.HttpContext.Request.UserAgent.IndexOf(userAgentToTest, StringComparison.OrdinalIgnoreCase) > 0);} }



    启用该引擎的使用方法:

    C#代码  
  • protected void Application_Start()   
  •        {   
  •            AreaRegistration.RegisterAllAreas();   
  •   
  •            RegisterRoutes(RouteTable.Routes);   
  •   
  •            ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine());   
  •   
  •            ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());   
  •   
  •            CronScheduler.Instance.startUp();   
  •   
  •   
  •        }  
  • 总结

    以上是生活随笔为你收集整理的asp.net 检测访问者是iphone,android,web(摘录)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。