在ASP.NET MVC 4中,可以很简单地实现针对不同的浏览器自适应布局和视图。这个得归功于MVC中的"约定甚于配置"的设计理念。

默认的自适应

MVC 4自动地为移动设备浏览器和PC设备浏览器进行自适应。针对布局页面,默认的文件名为_Layout.cshtml,这个默认会被所有的浏览器使用。但如果我们希望在移动设备上面,呈现一个不同的布局,只需要添加一个名称为_Layout.Mobile.cshtml的布局页面就可以了。同样的规则,也适用于普通的视图页面。例如Index.cshtml默认是被所有的浏览器使用的,但如果添加了Index.Mobile.cshtml,则在移动设备上面,会自动使用这个新的视图进行呈现。如下图所示

那么,为什么会能够自动实现这样的功能呢?或者我们该问问,怎么样才能区分移动设备浏览器呢?其实,这个说起来是不难的

下面这个文章介绍了关于浏览器检测的一些基本概念http://msdn.microsoft.com/zh-cn/library/x3k2ssx2(v=vs.100).aspx

在ASP.NET MVC中,是在什么位置,通过什么样的方式来进行这个检测,并且据此进行布局或视图的选择的呢?

通过分析源代码(http://aspnetwebstack.codeplex.com/ ),我们可以在下面的代码中发现端倪

所以,这个功能是在DisplayModeProvider这个类型中实现的。它默认注册了两个所谓的DefaultDisplayMode,其中第一个是有条件判断的,根据IsMobileDevice属性判断是不是移动设备浏览器,如果是,则使用一个固定的前缀Mobile。这个DefaultDisplayMode类型,会自动做路径的Transform。

自定义适应规则

如果理解了上面的原理,我们就可以根据需要添加自己的规则。例如,我们可以为iPhone设备添加一个特定的显示模型,可以修改global.asax中的代码。

这样的话,只要添加下面的布局或者视图页面的话,就可以很简单地实现针对iPhone设备的呈现了。

转载于:https://www.cnblogs.com/chenxizhang/p/3840733.html

ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图相关推荐

  1. 【初学者指南】在ASP.NET MVC 5中创建GridView

    介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...

  2. 关于ASP.NET MVC P5中CheckBox的HtmlHelper方法的bug。

    在ASP.NET MVC P5中,当你使用这样的方法输出CheckBox:<%=Html.CheckBox("checkTest")%>,在浏览器上除了你期望看到的代码 ...

  3. 在ASP.NET MVC应用中开发插件框架(中英对照)

    [原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I'v ...

  4. 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面

    使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面 使用Donut Caching和Donut Hole Caching在ASP.NET MVC ...

  5. 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图

    在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图 前提介绍 这个文章我们要讨论,在ASP.NET MVC模型的项目中,怎么选择一个最有效的方式来将多个数据模型(m ...

  6. ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用

    http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html FCKeditor下载路径: http://sourceforge.net/p ...

  7. 使用ASP.NET MVC Futures 中的异步Action

    在ASP.NET MVC中使用异步是比较麻烦的,从RC1版开始ASP.NET MVC Futures中提供了几个支持异步的类. 相关的类有:AsyncActionDescriptor.AsyncCon ...

  8. 在ASP.NET MVC 4中使用Kendo UI Grid

    Kendo UI 是Telerik推出的一套based on jQuery 的 Framework,提供了很多控件(Menu .Grid .Combox等...), 底层以Html5 + jQuery ...

  9. 使用ASP.NET MVC Futures 中的异步Action 【转】

    之前看过老赵这两篇文章.也研究了一下老赵异步的实现方式. 不过感觉自己扩展的话,在ASP.NET MVC中使用异步还真是麻烦,刚好看到从RC1版开始 ASP.NET MVC Futures中提供了几个 ...

最新文章

  1. 爬墙技术哪家强,师范找锡伟
  2. Flexible Box布局基础知识详解
  3. vuex页面数据丢失_使用vuex解决刷新页面state数据消失的问题记录
  4. linux的IP配置
  5. keil5按F12调不出头文件中函数
  6. jquery系列教程2-style样式操作全解
  7. uva-110-没有for循环的排序
  8. 这款 Android 图片选择库美哭了
  9. 设计模式 ( 十二 ) 静态代理模式
  10. kubeedge集群搭建
  11. 从mitt、tiny-emitter源码中学习手写订阅发布
  12. 微信公众号入门详细教程
  13. EnlightenGAN: Deep Light Enhancement without Paired Supervision
  14. 【测试面试】测试面试题集锦(二)
  15. 图像语义分割及常用评价指标
  16. 获取当天早上8点 - 明天早上8点时间
  17. 语言学习游戏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 2022 软件测试选择题【太原理工大学】
  19. 配置本地时间服务器(集群)
  20. MX25L1635D spi-flash芯片的读写记录

热门文章

  1. 编写可维护的JavaScript之避免使用全局变量
  2. 解决Ubuntu 14下,PhpStorm 9.x 编辑器界面中文乱码的问题
  3. VS2015 添加DNX SDK
  4. [IOS] Storyboard全解析-第一部分
  5. Linux——vim程序编辑器
  6. shell配置,选择,环境变量修改(ORACLE_HOME,ORACLE_SID),无法使用sqlplus
  7. 解决一条高难度的,关于时间段 数据汇总问题
  8. Jetpack CameraX 最新最全解读-开发实践
  9. android 键盘的隐藏与显示
  10. DFS BFS 总结