领先技术:在ASP.NET MVC 4中创建为移动设备优化的视图

如果深入探讨有关编写移动设备网站的常识性考虑因素,会发现其中有一种内在矛盾。一方面,客户在其 编写应用程序和网站的方法中强烈要求(或乐于要求)移动优先。另一方面,同一些人又经常称赞 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视图性能优化,以便于您获取更多的相关知识。

时间: 2024-09-10 17:23:55

领先技术:在ASP.NET MVC 4中创建为移动设备优化的视图的相关文章

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

介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些库能够提供所有必需的功能,如 Web 表格中的搜索.排序和分页等.是否包含这些功能,取决于应用的特殊需求,例如在客户端和服务器端提供搜索或其它功能的需求等. 可用的库 以下是一些可用的库和插件: Grid.Mvc MVCGrid.NET PagedList.MVC JQuery.Grid JQuer

一起谈.NET技术,ASP.NET MVC 2中使用jQuery UI控件详解

问:我想给我的ASP.NET MVC输入表单添加一个日期选择控件,但模型-视图-控制器(MVC)并没有提供这样的辅助方法,我该如何添加控件? 答:和ASP.NET Web表单不一样,MVC架构没有提供可以在设计面板中拖放的有状态的服务端控件,相反,MVC鼓励使用简单的HTML布局元素和基于数据的标签作为页面布局的要素,功能和最终的布局用客户端JavaScript和CSS样式表控制. MVC提供了一套基于HtmlHelper的扩展方法渲染大部分HTML标签,对于更复杂的功能,你需要自己编写HTML

一起谈.NET技术,Asp.net mvc 2中使用Ajax的三种方式

     在Asp.net MVC中,我们能非常方便的使用Ajax.这篇文章将介绍三种Ajax使用的方式,分别为原始的Ajax调用.Jquery.Ajax Helper.分别采用这三种方式结合asp.net mvc去实现一个史上最简单的留言板.     首先看一下原始的Ajax的调用的:      定义CommentController,代码如下: public class CommentController : Controller{private IList<string> _commen

浅谈ASP.NET MVC 3中如何使用Model

昨天博客发了新文章,讲一下我对如何使用MVC中的Model的看法,不是什么大技术,当是一个技术讨论^^ 原文地址:http://www.youguanbumen.net/Article.aspx?id=79 原文: 前两天写了个文章ASP.NET MVC 3 -- Model远程验证,主要记录了一下ASP.NET MVC 3中新增的RemoteAttribute类的使用,得益于这个类,我们可以在模型中为属性配置客户端远程校验的业务,文章中给了出一个简单的实体类MyUser_Add,举了一个最常见

一起谈.NET技术,ASP.NET MVC 2生成动态表单的一种最简单的思路

在BPM.OA等系统中,都会存在一个表单设计器.有些是通过操作gridview来完成一个表单的设计:有些是通过类似VS拖拽的方法完成一个表单的设计.很明显后面一种优越于前面一种.无论是哪种,最后都会产生一些XML之类的表单结构的数据. 这篇文章将讲述,在表单设计器设计好表单之后,在ASP.NET MVC中如何将表单结构的xml转换成实际应用系统中的表单.看下面一个xml文件,我们假设它是由一个表单设计器设计出来的. <?xml version="1.0" encoding=&qu

一起谈.NET技术,ASP.NET MVC 2示例Tailspin Travel UI层分析

Tailspin Travel 是一个旅游预订的应用程序示例,最新版本采用ASP.NET MVC 2技术构建,主要使用 DataAnnotations 验证, 客户端验证和ViewModels,还展示了许多Visual Studio 2010, .NET Framework 4, 和Windows Server AppFabric的技术,参看ASP.NET MVC 2示例Tailspin Travel. Tailspin Travel设计的技术比较多,今天我们来看看界面(UI)上的技术,在UI层

asp.net MVC项目中 没有easyui插件的智能提示

问题描述 asp.net MVC项目中 没有easyui插件的智能提示 5C vs2015 中的mvc4项目,已经分别把jQuery.min.js jquery.easyui.min.jseasyui-lang-zh_CN.js依次拖入,写js代码的时候 智能提示只有jquery中的属性和方法 没有easyui的(例如$.messager就出不来智能提示),但是可以正常执行出来插件效果,尝试编辑cshtml.html格式的文件都不提示,尝试把 jquery.easyui.min.js的文件名改为

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

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

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

Kendo UI 是Telerik推出的一套based on jQuery 的 Framework,提供了很多控件(Menu .Grid .Combox等...), 底层以Html5 + jQuery 来打造,并且兼容于各大浏览器,包含IE7.IE8.相关介绍可以参考AJAX式数据清单的新选择-Kendo UI Grid. 以下内容参考台湾的黑老大的文章:在ASP.NET MVC 4中使用Kendo UI Grid 建立一个ASP.NET MVC 4专案 使用NuGet安装KendoUIWeb及