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

C#代码  
  1. public class MobileCapableWebFormViewEngine : WebFormViewEngine
  2. {
  3. public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
  4. {
  5. ViewEngineResult result = null;
  6. var request = controllerContext.HttpContext.Request;
  7. //This could be replaced with a switch statement as other advanced / device specific views are created
  8. if (UserAgentIs(controllerContext, "iPhone"))
  9. {
  10. result = base.FindView(controllerContext, "Mobile/iPhone/" + viewName, masterName, useCache);
  11. }
  12. // Avoid unnecessary checks if this device isn't suspected to be a mobile device
  13. if (request.Browser.IsMobileDevice)
  14. {
  15. if (UserAgentIs(controllerContext, "MSIEMobile 6"))
  16. {
  17. result = base.FindView(controllerContext, "Mobile/MobileIE6/" + viewName, masterName, useCache);
  18. }
  19. else if (UserAgentIs(controllerContext, "PocketIE") && request.Browser.MajorVersion >= 4)
  20. {
  21. result = base.FindView(controllerContext, "Mobile/PocketIE/" + viewName, masterName, useCache);
  22. }
  23. //Fall back to default mobile view if no other mobile view has already been set
  24. if ((result == null || result.View == null) &&
  25. request.Browser.IsMobileDevice)
  26. {
  27. result = base.FindView(controllerContext, "Mobile/" + viewName, masterName, useCache);
  28. }
  29. }
  30. //Fall back to desktop view if no other view has been selected
  31. if (result == null || result.View == null)
  32. {
  33. result = base.FindView(controllerContext, viewName, masterName, useCache);
  34. }
  35. return result;
  36. }
  37. private bool UserAgentIs(ControllerContext controllerContext, string userAgentToTest)
  38. {
  39. return (controllerContext.HttpContext.Request.UserAgent.IndexOf(userAgentToTest, StringComparison.OrdinalIgnoreCase) > 0);
  40. }
  41. }
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#代码  
  1. protected void Application_Start()
  2. {
  3. AreaRegistration.RegisterAllAreas();
  4. RegisterRoutes(RouteTable.Routes);
  5. ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine());
  6. ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
  7. CronScheduler.Instance.startUp();
  8. }

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

  1. ASP.NET 4 和 Visual Studio 2010 Web 开发概述

    声明:本文是ASP.NET 白皮书 ASP.NET 4 and Visual Studio 2010 Web Development Overview 的阅读摘要,只是本人的学习记录,并非完整翻译,仅 ...

  2. Android Web应用高级编程

    为什么80%的码农都做不了架构师?>>>    基本信息 原书名: Pro Android Web Apps: Develop for Android using HTML5, CS ...

  3. iPhone X Web 设计

    iPhone X Web 设计 原文地址:https://webkit.org/blog/7929/designing-websites-for-iphone-x/ 开箱即用(开发者无需进行任何设置) ...

  4. 仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]

    本文为原创分享,转载请注明出处. 1.引言 即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求,现在都讲究用户体验,所以时间显示再也不能像传统软件一样简单粗地暴显示成"年/月/日 时: ...

  5. iphone android 开发指南 http://mobile.tutsplus.com

    非常好的教程 iphone& android 开发指南 http://mobile.tutsplus.com/category/tutorials/iphone/ http://mobile. ...

  6. 使用ASP.Net 3.5 的Ajax与Web服务开发实例

    本文继续介绍使用ASP.NET3.5中的AJAX环境中如何从客户端JavaScript调用Web服务方法.编写本文的目的在于让大家深刻了解基于ASP.Net3.5的Ajax和Web的服务,虽然例子比较 ...

  7. 测试用html文件是否存在,ASP如何检测某文件夹是否存在,不存在则自动创建

    直接给大家分享一下脚本之家测试正常可以使用的代码,并且支持多级目录创建 代码一 Function CreateMultiFolder(ByVal CFolder) Dim objFSO, PhCrea ...

  8. 【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结

    使用 ASP.NET Core 3.x 构建 RESTful Web API 的视频教程已经完结,共50讲,约10.5小时. B站可看,点击原文链接. 度娘盘可下载完整视频: https://pan. ...

  9. 使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目

    今天,Visual Studio中没有内置工具来测试WEB API.使用浏览器,只能测试http GET请求.您需要使用Postman,SoapUI,Fiddler或Swagger等第三方工具来执行W ...

最新文章

  1. pythonurllib模块-python模块之urllib
  2. CentOS7 设置开机直接进入命令行界面
  3. mule 基于wsdl调用cxf web service
  4. Facade与Mediator模式的区别
  5. 【转】ofbiz数据库表结构设计
  6. 2017西安交大ACM小学期数据结构 [分块、二维矩阵]
  7. 数据挖掘学习指南!!
  8. linux启动过程中内核拷贝,轻松识破linux内核启动过程中的“”套路“”
  9. linux新手常用命令
  10. SpringBoot2.1.15(26) WebFlux快速上手——响应式Spring的道法术器
  11. 虚拟机 网卡模式配置
  12. python学习笔记之其它
  13. ai人工智能使用的软件_MachineRay:使用AI创造抽象艺术
  14. windows是第几代计算机,Win7一个月后将被官方淘汰!历代微软系统哪个是你的青春?...
  15. OpenCV总结——高斯核
  16. c语言数组中找出相同的数,找出数组中重复的数字(c语言)
  17. [Leetcode] 158. Read N Characters Given Read4 II - Call multiple times 解题报告
  18. 为文件添加everyone权限
  19. 以太坊源码分析(37)eth以太坊协议分析
  20. 计算机老师新年贺卡祝福语,新年贺卡祝福语老师大全

热门文章

  1. Nunit2.5.10快速上手
  2. 细数开源历史上的九个重大事件
  3. 将数组绑定到dropdownlist上
  4. 全国计算机等级考试题库二级C操作题100套(第40套)
  5. java 应用是单机集群_【架构】Tomcat单机部署多应用Windows
  6. 线程的start()方法
  7. Wi-Fi Expert专业无线网测试软件
  8. Wi-Fi 6值得升级吗?从Wi-Fi 5升级到Wi-Fi 6需要什么?
  9. 数据库:MYSQL相关设计规范梳理,值得收藏!
  10. 后端技术:Hibernate 和 MyBatis 哪个更好用?