如果深入探讨有关编写移动设备网站的常识性考虑因素,会发现其中有一种内在矛盾。一方面,客户在其 编写应用程序和网站的方法中强烈要求(或乐于要求)移动优先。另一方面,同一些人又经常称赞 CSS 媒体 查询和流体布局。我所发现的矛盾在于经常利用 CSS 媒体查询和流体布局并未在其他内容之前优先处理移动 方面,它不是一种移动优先的方法。在本文中,我将介绍如何使用服务器端逻辑为给定设备呈现最佳的显示效 果,并介绍 ASP.NET MVC 4 的一种新功能,称为显示模式。
问题不在于 CSS 媒体查询作为一种技术。问题甚至也不在于自适应 Web 设计 (RWD) 作为 CSS 媒体查询 的支持方法 — 虽然不是这项技术启发性的宗旨所在。那么,怎样将使用 CSS 媒体查询和流体布局变为一种 “移动优先”的方法?在用于推广此方法的口号中即可发现端倪: 一个基本代码可为多个视图服务。在这个 角度上,使用 CSS(一种客户端技术)在视图之间切换,而使用 JavaScript 在 CSS 无法胜任时进一步调整 视图。
在我看来,此方法中的基本做法是为所有设备提供相同内容,只调整页面布局以适合屏幕大小。因此,可 能无法向用户提供最佳的体验。我认为,您应在合理的情况下力求仅有一个基本代码(Web API 的共同基础) ,但一定要重点关注要支持的每类设备的具体使用情况。“移动”一词如今已变得意义狭窄,被智能手机、平 板电脑、笔记本电脑和智能电视等多种类型的设备取代,更不用说眼镜显示器和智能手表等可穿戴设备。
大约一年前,我在这个专栏中展示了一种在开发 ASP.NET MVC 网站时采用的服务器端方法: 用于为 所支持的每类设备创建临时视图(“移动站点开发:标记”msdn.microsoft.com/magazine/jj133814)。 我当时在 ASP.NET MVC 3 的环境中这样做。ASP.NET MVC 4 完全胜任这项任务,它具有前面提到的显示模式 ,可使用它轻松实现为给定设备提供最佳视图和内容的服务器端逻辑。为了切实有效,此方法要求您尽可能多 地了解请求设备的功能。但是,除了有关屏幕大小和当前方向的基本信息外,在客户端上检测不到其他内容。 然后,需要采用设备信息的服务器存储库。
在 ASP.NET MVC 4 中引入显示模式
在我开始深入探讨显示模式之前,请让我事先声明,这篇文章(以及显示模式技术本身)主要涉及生成一 个独一无二的新站点,其中将同一 URL 动态绑定到不同的视图。如果您已有网站,要提供一个为某些(移动 )设备优化的附属网站,那完全是另一个话题。您仍可将本专栏作为生成附属网站的指南,但与现有父网站统 一 URL 需要使用其他工具。
在 ASP.NET MVC 4 中,显示模式是一项系统功能,该功能扩展视图引擎的传统行为,使后者可选取最适合 请求设备的视图文件。在前面提到的 ASP.NET MVC 3 文章中,我为此使用了自定义视图引擎。在该解决方案 中,我还只能使用 Razor 视图。通过显示模式,控制器方法仍将调用,比如说,一个名为 Index 的视图,如 果已知请求设备为某种移动设备,则 ASP.NET MVC 运行时将改为选取一个名为 index.mobile.cshtml 的视图 文件。
这是一个大好消息,因为这表示网站仍可只有一个基本代码。只需为要支持的每类设备添加额外的 CSHTML 视图文件。为了开始使用显示模式,我们来看图 1 中的代码示例。
图 1:支持的显示模式的标准列表
<h2> Display Modes currently active (@DisplayModeProvider.Instance.Modes.Count mode(s)) </h2> <ul> @{ foreach(var d in DisplayModeProvider.Instance.Modes) { <li>@(String.IsNullOrEmpty(d.DisplayModeId) ?"default" :d.DisplayModeId)</li> } } </ul>
图 1 中代码中的页面显示支持的显示模式的标准列表。图 2 显示由该页面生成的输出。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/aspx/
图 2:显示模式的默认列表
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索移动
, 视图
, 网站
, 模式
, 设备
, mvc4asp.net分布视图
, 一个
mvc查询模式
mvc 创建强类型视图、mvc创建视图、oracle 视图优化、mysql 视图优化、mysql视图性能优化,以便于您获取更多的相关知识。