mvc创建视图运行一直有页头页脚怎么去掉页眉页脚

青青子衿, 悠悠我心, 但为君故, 沉吟至今
构建移动Web应用程序的技术堆栈
  编写web应用程序时,有很多的技术决策。笔者最近回来编写现代Web应用程序,并希望总结一些曾经在开发周期过程中做了记录零散的想法。这篇文章是关于一套对笔者最近开发的项目有帮助的框架。笔者重温了一些最重要的框架类型,其中每一个可以展开来写一篇文章。这并不是一个广泛的现有产品相比,只是一个笔者最近使用的部分技术。  虽然笔者的重点是移动优先, 笔者认为,这套技术可以应用在一般的web应用程序。 笔者的决定和数据支持考虑了几个要求:
基于JavaScript(CoffeeScript,Dart,绝对值得认真看看,但我想避免引起激进选择)
必须在现代浏览器工作良好(IOS 5,Android 4)  挑选一个MVC框架  在本地UI的应用程序开发中模型视图控制器模式已经使用了几十年。其基本思路是分开表示层(用户界面,动画,输入)和数据层(存储,通讯,数据)。有其他类似的模式,如MVVM的(模型视图的ViewModel),但主要的想法是在展现和数据层之间有定义良好的分离,为了更干净的代码和长期的维护:  有许多JavaScript模型视图控制器框架的产品。有一些如和是用纯代码编写的,而其他像和依靠DOM数据属性绑定。那些依赖HTML5数据DOM属性的分离视图和数据的MVC系统被认为是不对的。这不包括Knockout.js和Angular框架。 spine.js比 CoffeeScript更容易,根据我最初的要求排除了CoffeeScript。  backbone.js比大多数框架更受欢迎(也许除JavaScriptMVC外,似乎像一个死的项目),还设有一个成长的开源社区。对于笔者的应用程序栈,笔者选择了Backbone.js。欲了解更多有关挑选一个MVC的信息,检出,它使用不同的MVC框架实现相同的Todo应用程序。还可以看到这个,它强烈赞成,一个出现相对较晚的框架。笔者尚未有机会使用它,但它在我的清单上。  选择一个模板引擎  要在网络上建立一个严谨的应用程序,你不可避免地要建立大型的DOM树。如果使用JavaScript API来操作DOM,不如使用基于字符串的模板编写html来得更简单高效。JS模板已经逐步形成一个奇怪的约定,嵌入模板的内容到脚本标记内:&script id=&my-template& type=&text/my-template-language&&... &/script&。使用所有的模板引擎的基本做法是作为一个字符串来加载模板,构建模板参数,然后通过模板引擎模板和参数运行。  backbone.js依赖于,它有一个有些局限的有详细语法的模板引擎。有其他可供选择,包括,,和许多其他的。 jQuery模板已经被jQuery团队准备废弃了,所以我没有考虑这个选项。Mustache是一个跨语言的模板系统,具有简单和成熟的决定,以支持尽可能少的逻辑。事实上,在Mustache最复杂的构造是遍历一个对象数组的方式。 handlebars.js建于Mustache之上,加入一些不错的功能,如预编译模板和模板表达式。对于笔者而言,并不需要这些额外的功能,然后选择了笔者的模板平台Mustache.js。  在一般情况下,笔者的印象是,现有的模板框架可比较的功能是很少的,因此决定在很大程度上是个人喜好的问题。  选择一个CSS框架  CSS框架是必不可少的工具,用来扩展CSS如变量等方便的功能集,创建分层的CSS选择器的方式,以及一些更先进的功能。这实质上是创建了一个新的语言:CSS的增强版本(姑且称之为它的CSS++)。为便于开发,一些框架在浏览器中实现了一个JavaScript的CSS+ +解释器,而一些其他框架让你监控一个CSS+ +文件,并每当有更改就编译它。所有的CSS框架应提供命令行工具来编译CSS++成CSS给开发。  像模板语言一样,也有很多选择。笔者的选择是出于个人的语法偏好,笔者更喜欢,因为它避免了像@怪异的语法。 SCSS的一个缺点是,它并没有附带一个JavaScript解释器(有一个,笔者还没有试过),但可用命令行监视器。还有其他类似的CSS框架,包括和。  如何布局视图Views  HTML5提供了多种方式来布局内容,MVC框架对这些布局技术的使用无要求,留给开发者你一点困难。  一般来说,对documents相对位置是合适的,但对apps除外。应避免绝对定位,像tables。许多Web开发人员已经转向使用float属性对准元素的,但是这只是第二理想的构建应用程序的观点,因为它没有类似应用程序的布局,导致许多奇怪的问题和臭名昭著的。  经过多年来的布局与各种网络技术的实验,笔者认为一个固定的定位和flex box的模型相结合是移动互联网应用的理想选择。笔者使用的是将屏幕上的界面元素(页眉,侧边栏,页脚等)固定定位。flex box 模型对在页面上布局堆叠视图(Stacked views)是很棒的(水平或垂直的)。只有CSS盒模型明显地对界面设计进行了优化,非常类似Android的LinearLayout 管理器。对于有关flex box模型的更多信息,请阅读的文章,并注意该规范正在由一个新的,取代。  自适应Web应用程序  最后一节,在这个问题上:笔者大力提倡创建设备特定的用户界面。这意味着为不同的形式屏幕重新编写视图代码部分。幸运的是,MVC模式,使得它比较容易为多个视图(如平板电脑和手机)重用业务逻辑model。  iOS Flipboard演示了这个想法很好,它为平板电脑和手机用户提供了为每个设备外形高度定制的体验。手机用户界面特别为垂直点击进行了优化,允许单手使用。平板的UI让两手反面持有设备工作良好。  输入的考虑  移动用户与您的应用程序进行交互的主要方式是通过用手指触摸屏幕。这与基于鼠标的互动相当不同,因为有额外9点在跟踪屏幕,这意味着开发人员编写移动应用程序时,需要抛弃移动鼠标事件。此外,在移动鼠标事件有300ms延迟点击的问题(有一个著名的)。在移动浏览器使用这些事件的详细信息,请参阅我的。  只有S /mousedown/ touchstart/所有的事件处理程序是不够的。有 一套全新的用户期待的触摸设备手势,如点击、通过浏览图像列表导航。虽然苹果公司有一个鲜为人知的,但没有在网页上做手势检测的开放规范。我们真的需要一个JavaScript手势检测库,去处理一些。  如何使其离线工作  对于一个应用程序脱机工作,你需要确保两件事情真实:
Assets资产可用(通过AppCache,文件系统API等)
数据是可用的(通过LocalStorage,WebSQL,IndexedDB等)  实践中,在网络上建立离线应用是一个棘手的问题。一般来说脱机功能应从一开始就加入你的应用程序。让现有Web应用程序没有显着的重写代码运行在离线状态下是特别困难的。此外,脱机技术还有各种未知的存储限制,而且未知超出限制时会发生什么不确定的行为。最后,在离线的技术堆栈还有一些技术问题,最显着的是AppCache,正如我在提到。  写真正的离线功能的应用程序是一个非常有趣的方法是&离线优先&。换句话说,如果没有互联网连接全部写入本地,当存在互联网连接,实现同步数据同步层。在Backbone.js MVC模型,这可以很好地适应自定义Backbone.sync适配器。  单元测试  单元测试您的UI是有困难的。然而,因为你使用MVC的模型,它是完全隔离的UI和数据结果,因此,可方便测试。是一个相当不错的选择,特别是因为它允许使用它的方法单元测试异步代码。  总结  总之,笔者使用Backbone.js 作为 MVC 框架,Mustache.js做为模板,SCSS作为CSS框架,CSS的Flex box展现界面views,自定义触摸事件和QUnit单元测试工具,来写笔者的移动Web应用程序。脱机支持,笔者仍然尝试用各种技术,并希望未来继续写篇文章。虽然笔者强烈相信有必要在这里列出每种工具(如MVC),笔者也相信,笔者在这里描述的许多具体的技术是可以互换的(如Handlebars 和 Mustache)。  还有一件事:日,宣布发布。这是一个基于Backbone一套开发库,非常类似我在这篇文章里描述的思想。笔者还没有在任何深度研究,但名称是伟大的:)  使用一套类似的框架吗?有你最喜欢的?觉得笔者缺少一个重要的框架吗?让笔者知道!  来源:,中文编译:。
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
感觉月光懂的很多
这种文章也能发上来,Google翻译玩了都不自己先看一遍吗?还是机器翻译完了有自作主张把看不懂的改的更绕口?“笔者”“笔者”“笔者”“笔者”“笔者”“笔者”“笔者”“笔者”“笔者”“笔者”真不专业。
翻译的后应该校对一下吧!
SEO优化搜索引擎搜索技巧网站优化web基础应用程序月光博客回味无穷
感觉比较复杂
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.ASP.NET MVC 四 移动特性
&来源:读书人网&【读书人网():综合教育门户网站】
ASP.NET MVC 4 移动特性此教程将讨论ASP.NET MVC 4 Web应用程序里的移动特性。对于此教程,可以使用 Visual
ASP.NET MVC 4 移动特性此将讨论ASP.NET MVC 4 Web应用程序里的移动特性。对于此,可以使用&Visual Studio Express 2012&或者 Visual Web Developer 2010 Express Service Pack 1 (&Visual Web Developer 或者 VWD&). &如果你已经有了专业版本的 Visual Studio 你也可以使用。开始之前,确保你已经安装了以下列出的必需项。&Visual Studio Express 2012&(推荐) 或者 Visual Studio Web Developer Express SP1。 Visual Studio 2012 包含了 ASP.NET MVC 4。如果你用的是 Visual Web Developer 2010,你还得安装&ASP.NET MVC 4&。你还需要一个移动浏览器模拟器。下面哪个都行:Windows 7 Phone Emulator. (本教程里大多数截图都是用的这个模拟器)更改用户代理字符串模拟iPhone。见&这篇&博客。Opera Mobile EmulatorApple Safari&,必须已经为iPhone设置了用户代理字符串。如何在Safari里为&iPhone&设置用户代理字符串,见David Alison的博客&How to let Safari pretend it's IE&。本文配套的C#源代码的Visual Studio 工程文件见下:初学者工程下载完整工程下载要生成什么东西在初学者工程中提供的简单会议列表程序里添加移动特性。 下面的截图演示了在Windows 7 Phone Emulator里看到的完整程序的页签。要简化键盘输入,见&Keyboard Mapping for Windows Phone Emulator&。你可以通过设置用户代理字符串在IE9或10,FireFox或Chrome里开发你的移动应用程序。下图演示使用IE来模拟iPhone的完整教程。可以用IE F-12开发者工具和&Fiddler tool&来帮你调试程序。将学到的技能以下是你将要学到的东西:ASP.NET MVC 4 模板是如何使用 HTML5的&viewport&属性和自适应呈现来改善移动设备上的显示效果。如何创建移动专用视图。如何创建视图开关让用户在应用程序的移动视图和桌面视图间进行切换。开始吧点击此链接下载初学者工程的会议列表程序。然后在Windows资源管理器中,右击&MvcMobile.zip&文件并选择属性。在&MvcMobile.zip 属性对话框中,点击“解除锁定”按钮。(解除锁定防止你在使用从网上下载的.zip文件时弹出安全警告)解压&MvcMobile.zip&文件并在Visual Studio中打开&MvcMobile.sln&文件。按下 CTRL+F5 运行程序,它将显示在桌面浏览器中。启动移动浏览器模拟器,复制会议程序的URL到模拟器中,然后点击&Browse by tag&链接。如果你用的是 Windows Phone 模拟器,在URL框中点击,按下暂停(Pause)键获取键盘访问。下图演示&AllTags&视图 (点击了&Browse by tag)。这个页面在移动设备上非常具备可读性。点击 ASP.NET 链接。ASP.NET 标签页非常杂乱。例如Date列就很难看。接下来的教程里会教大家创建专门为移动浏览器定制的版本,那个看起来就好看多了。注意: 目前移动缓存引擎里有个Bug。在运行产品程序前,要先安装&Fixed DisplayModes&nugget 包。Bug的修复详见&ASP.NET MVC 4 Mobile Caching Bug Fixed&。CSS 媒体查询CSS 媒体查询&是对媒体类型的CSS扩展。它们能让你为特定的浏览器(用户代理)重写默认的CSS规则。一个常见的用于移动浏览器的CSS规则是定义屏幕的最大大小。 创建完ASP.NET MVC 4 Internet工程后,Content\Site.css&文件包含了以下媒体查询:@media only screen and (max-width: 850px) {如果浏览器窗口宽度是 850 像素或更小,那它将会使用这个媒体块中的CSS规则。像这样使用CSS媒体查询为小屏幕浏览器(如移动浏览器)提供更好的HTML显示内容,默认的CSS规则用于桌面浏览器的较宽显示设计。Viewport 元标签大多数移动浏览器都定义了虚拟的浏览器窗口宽度(视口viewport),这个宽度比移动设备的真是宽度要大得多。这使得移动浏览器在虚拟显示内适应整个网页。用户就可以在感兴趣的内容上放大。但是,如果将视口宽度设为实际的设备宽度的话,是不需要放大的,因为内容已经适应移动浏览器了。ASP.NET MVC 4布局文件中的viewport&&meta&&标签将视口设置成设备的宽度。&&meta name=&viewport& content=&width=device-width&&测试CSS媒体查询和Viewport Meta标签的效果在编辑器中打开&Views\Shared\_Layout.cshtml&文件,把 viewport&&meta&&标签注释掉。@*&meta name=&viewport& content=&width=device-width&&*@在编辑器中打开&MvcMobile\Content\Site.css 文件,将媒体查询中的最大宽度改为0像素。这将会防止CSS规则用在移动浏览器中。@media only screen and (max-width: 0px) { ...保存设置并在移动浏览器模拟器中浏览会议程序。下图中的小文字就是移除viewport&&meta&&标签后的结果。没有 viewport&&meta&&标签,浏览器缩小到默认视口宽度 (大多数移动浏览器是850 像素或更宽)撤销更改――在布局文件中取消注释 viewport&&meta&&标签并将Site.css文件中的媒体查询恢复为850像素。保存更改,刷新移动浏览器验证一下移动友好显示是否已恢复。viewport&&meta&&标签和 CSS 媒体查询并不是ASP.NET MVC 4特有的,你可以在任何web程序中利用这些特性。不过在创建新的ASP.NET MVC 4工程时,它们现在已经嵌入到生成的文件中了。要了解更多关于 viewport&&meta&&标签,参见&A tale of two viewports ― part two.下一节,你将看到如何提供移动浏览器特有视图。重写视图,布局和部分视图ASP.NET MVC 4的一个重要新特性是可以为通用的移动浏览器、个别移动浏览器或者任何特定浏览器重写任何视图(包括布局和部分视图)的机制。要提供特定移动视图,可以复制一个视图文件并在文件名中添加.Mobile。例如,要创建一个移动索引视图,可以复制&Views\Home\Index.cshtml&到&Views\Home\Index.Mobile.cshtml。本节将创建一个特定移动布局文件。开始前,先复制&Views\Shared\_Layout.cshtml&到&Views\Shared\_Layout.Mobile.cshtml。打开&_Layout.Mobile.cshtml&并把标题从&MVC4 Conference&改为&Conference (Mobile).在每一个&Html.ActionLink&调用处,移除每一个ActionLink链接里的 &Browse by& 。下面代码演示完整的移动布局文件体。&!DOCTYPE html&&html&&head&& & &meta charset=&utf-8& /&& & &meta name=&viewport& content=&width=device-width& /&& & &title&@ViewBag.Title&/title&& & @Styles.Render(&~/Content/css&)& & @Scripts.Render(&~/bundles/modernizr&)&/head&&body&& & &div id=&title&&& & & & &h1& Conference (Mobile)&/h1&& & &/div&& & &div id=&menucontainer&&& & & & &ul id=&menu&&& & & & & & &li&@Html.ActionLink(&Home&, &Index&, &Home&)&/li&& & & & & & &li&@Html.ActionLink(&Date&, &AllDates&, &Home&)&/li&& & & & & & &li&@Html.ActionLink(&Speaker&, &AllSpeakers&, &Home&)&/li&& & & & & & &li&@Html.ActionLink(&Tag&, &AllTags&, &Home&)&/li&& & & & &/ul&& & &/div&& & @RenderBody()& & @Scripts.Render(&~/bundles/jquery&)& & @RenderSection(&scripts&, required: false)&/body&&/html&复制&Views\Home\AllTags.cshtml&文件到&Views\Home\AllTags.Mobile.cshtml。打开新文件并将&h2&&元素从“Tags”更改为 &Tags (M)&:&h2&Tags (M)&/h2&用桌面浏览器和移动浏览器模拟器分别浏览该标签页。移动浏览器模拟器显示出了这两处更改。相反,桌面显示没任何变化。特定浏览器视图除了特定移动和特定桌面视图,还可以创建个别浏览器视图。例如,可以创建专用于iPhone浏览器的视图。本节将创建一个用于iPhone浏览器和AllTags视图的iPhone版本布局。打开&Global.asax&文件添加以下代码到&Application_Start&方法。DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode(&iPhone&){& & ContextCondition = (context =& context.GetOverriddenUserAgent().IndexOf& & & & (&iPhone&, StringComparison.OrdinalIgnoreCase) &= 0)});这段代码定义了一个新的显示模式,名为iPhone,它将匹配每一个传入的请求。如果传入的请求与你定义的条件相匹配(也就是,如果用户代理包含了字符串”iPhone“), ASP.NET MVC 将寻找名字包含”iPhone“后缀的视图。在代码里,右击&DefaultDisplayMode&,选择”解析“,然后选择&using System.Web.WebP. 将添加&System.Web.WebPages&命名空间,就是&DisplayModes&和DefaultDisplayMode&类定义的地方。另外,可以手工添加下面的&using&部分。using System.Web.WebP完整的&Global.asax&文件内容见下:using Susing System.Web.Husing System.Web.Musing System.Web.Ousing System.Web.Rusing System.Web.WebPnamespace MvcMobile{& & public class MvcApplication : System.Web.HttpApplication& & {& & & & protected void Application_Start()& & & & {& & & & & & DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode(&iPhone&)& & & & & & {& & & & & & & & ContextCondition = (context =& context.GetOverriddenUserAgent().IndexOf& & & & & & & & & & (&iPhone&, StringComparison.OrdinalIgnoreCase) &= 0)& & & & & & });& & & & & & AreaRegistration.RegisterAllAreas();& & & & & & WebApiConfig.Register(GlobalConfiguration.Configuration);& & & & & & FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);& & & & & & RouteConfig.RegisterRoutes(RouteTable.Routes);& & & & & & BundleConfig.RegisterBundles(BundleTable.Bundles);& & & & }& & }}保存更改。复制&MvcMobile\Views\Shared\_Layout.Mobile.cshtml&文件到&MvcMobile\Views\Shared\_Layout.iPhone.cshtml。打开新文件并把&h1&头从&Conference (Mobile)&改为&Conference (iPhone)。复制&MvcMobile\Views\Home\AllTags.Mobile.cshtml&文件到&MvcMobile\Views\Home\AllTags.iPhone.cshtml。在新文件里,把&&h2&&元素里的 &Tags (M)& 改为 &Tags (iPhone)&.运行程序。运行移动浏览器模拟器,确保用户代理设为”iPhone“,浏览到&AllTags&视图。下面的截图显示Safari浏览器里呈现的&AllTags&视图。你可以在这里下载&Safari for Windows 。本节我们看到了如何创建移动布局和视图和如何创建特定设备的布局视图,如iPhone。下节来讨论jQuery Mobile如何控制移动视图。使用jQuery MobilejQuery Mobile&类库提供了一个可以运行在所有主要移动浏览器的用户接口框架。 jQuery Mobile 应用了支持CSS和JavaScript的逐步增强。逐步增强允许所有浏览器显示网页的基本内容,同时允许更多强大的浏览器和设备具有更丰富的显示。jQuery Mobile包括的JavaScript 和CSS 文件不用更改任何标记就能使得元素具有适应移动浏览器的样式。本节将安装&jQuery.Mobile.MVC&NuGet 包, 它将安装 jQuery Mobile 和 视图开关小工具。开始之前,先删除之前创建的&Shared\_Layout.Mobile.cshtml&和&Shared\_Layout.iPhone.cshtml&文件。重命名&Views\Home\AllTags.Mobile.cshtml&和&Views\Home\AllTags.iPhone.cshtml&文件为&Views\Home\AllTags.iPhone.cshtml.hide 和&Views\Home\AllTags.Mobile.cshtml.hide.。由于文件已经不再有.cshtml&扩展名,所以他们不会被 ASP.NET MVC 运行时使用来呈现&AllTags&视图。按如下说明安装&jQuery.Mobile.MVC&NuGet 包:从”工具“菜单,选择”库程序包管理器“,然后选择”程序包管理器控制台“。在”程序包管理器控制台“中,输入&Install-Package jQuery.Mobile.MVC -version 1.0.0下图显示MvcMobile工程里由NuGet jQuery.Mobile.MVC包增加和更改的文件。增加的文件在文件名后有一个 [add] 。图里没有显示Content\images文件夹里新增的GIF 和 PNG 文件。jQuery.Mobile.MVC NuGet 包安装了以下的东西:App_Start\BundleMobileConfig.cs&文件,用来引用新增的 jQuery JavaScript 和 CSS 文件。请遵照接下来的指示引用这个文件定义的移动bundle。jQuery Mobile CSS 文件。一个&ViewSwitcher&控制器小工具 (Controllers\ViewSwitcherController.cs)。jQuery Mobile JavaScript 文件。一个jQuery Mobile样式的布局文件 (Views\Shared\_Layout.Mobile.cshtml)。一个视图开关部分视图&(MvcMobile\Views\Shared\_ViewSwitcher.cshtml) ,在每个页面顶部提供一个链接以在桌面视图和移动视图之间转换。几个.png& 和.gif&图片文件,位于&Content\images&目录。打开&Global.asax&文件,在&Application_Start&方法最后加上这句代码:BundleMobileConfig.RegisterBundles(BundleTable.Bundles);以下是完整的&Global.asax&文件。using Susing System.Web.Husing System.Web.Musing System.Web.Ousing System.Web.Rusing System.Web.WebPnamespace MvcMobile{& & public class MvcApplication : System.Web.HttpApplication& & {& & & & protected void Application_Start()& & & & {& & & & & & DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode(&iPhone&)& & & & & & {& & & & & & & & ContextCondition = (context =& context.GetOverriddenUserAgent().IndexOf& & & & & & & & & & (&iPhone&, StringComparison.OrdinalIgnoreCase) &= 0)& & & & & & });& & & & & & AreaRegistration.RegisterAllAreas();& & & & & & WebApiConfig.Register(GlobalConfiguration.Configuration);& & & & & & FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);& & & & & & RouteConfig.RegisterRoutes(RouteTable.Routes);& & & & & & BundleConfig.RegisterBundles(BundleTable.Bundles);& & & & & & BundleMobileConfig.RegisterBundles(BundleTable.Bundles);& & & & }& & }}打开&MvcMobile\Views\Shared\_Layout.Mobile.cshtml&文件,在Html.Partial调用之后直接加上下面的标记:&div data-role=&header& align=&center&&& & @Html.ActionLink(&Home&, &Index&, &Home&)& & @Html.ActionLink(&Date&, &AllDates&)& & @Html.ActionLink(&Speaker&, &AllSpeakers&)& & @Html.ActionLink(&Tag&, &AllTags&)&/div&完整的&MvcMobile\Views\Shared\_Layout.Mobile.cshtml&文件:&!DOCTYPE html&&html&&head&& & &meta charset=&utf-8& /&& & &title&@ViewBag.Title&/title&& & &meta name=&viewport& content=&width=device-width& /&& & @Styles.Render(&~/Content/Mobile/css&, &~/Content/jquerymobile/css&)& & @Scripts.Render(&~/bundles/jquery&, &~/bundles/jquerymobile&)&/head&&body&& & &div data-role=&page& data-theme=&a&&& & & & @Html.Partial(&_ViewSwitcher&)& & & & &div data-role=&header& align=&center&&& & & & & & @Html.ActionLink(&Home&, &Index&, &Home&)& & & & & & @Html.ActionLink(&Date&, &AllDates&)& & & & & & @Html.ActionLink(&Speaker&, &AllSpeakers&)& & & & & & @Html.ActionLink(&Tag&, &AllTags&)& & & & &/div&& & & & &div data-role=&header&&& & & & & & &h1&@ViewBag.Title&/h1&& & & & &/div&& & & & &div data-role=&content&&& & & & & & @RenderSection(&featured&, false)& & & & & & @RenderBody()& & & & &/div&& & &/div&&/body&&/html&生成程序,在浏览器模拟器里浏览&AllTags&视图,如图:注意:可以通过&设置用户代理字符串&为IE或Chrome调试移动特定代码,然后使用&F-12开发工具。如果移动浏览器不显示&Home,&Speaker,&Tag, 和&Date&链接的话,那么 jQuery Mobile 脚本和 CSS 文件可能没有正确的引用。除了样式变了之外,还可以看到显示了移动视图和一个能让你从移动视图换成桌面视图的链接。选择Desktop视图链接,则桌面视图将显示。桌面视图并不是直接回退到移动视图。现在就修复它吧。打开&Views\Shared\_Layout.cshtml&文件,在页面的&body元素下,增加以下代码,呈现视图开关小工具。@Html.Partial(&_ViewSwitcher&)在移动浏览器中刷新&AllTags&视图。现在就可以在桌面和移动视图间切换了。调试注意:当用用户代理字符串设置了移动设备时,可以在 Views\Shared\_ViewSwitcher.cshtml 里加上下面这句代码来帮你调试视图。else{& & &@:Not Mobile/Get}再在&Views\Shared\_Layout.cshtml&文件里加上这个头:&&h1& Non Mobile Layout MVC4 Conference &/h1&在桌面浏览器里浏览&AllTags&页面。 视图开关小工具并不在桌面浏览器中显示,因为它只在移动布局页面才会添加。待会儿你将看到如何将视图开关小工具加到桌面视图中。改善演讲者列表在移动浏览器中,选择&Speakers&链接。由于没有移动视图(AllSpeakers.Mobile.cshtml),所以默认的演讲者显示界面 (AllSpeakers.cshtml) 用移动布局视图来呈现 (_Layout.Mobile.cshtml)。可以在Views\_ViewStart.cshtml文件中通过设置&RequireConsistentDisplayMode&为&true&来全局地禁用默认(非移动)视图呈现在移动布局中。如:@{& & Layout = &~/Views/Shared/_Layout.cshtml&;& & DisplayModeProvider.Instance.RequireConsistentDisplayMode =}当&RequireConsistentDisplayMode&设置为&true,移动布局 (_Layout.Mobile.cshtml) 只用于移动视图。 (也就是说,视图文件名形如&ViewName.Mobile.cshtml.) 如果移动布局在非移动视图中显示不好,你可能就要设置&RequireConsistentDisplayMode&为&true&。下面的截图演示当&RequireConsistentDisplayMode&设为&true&时Speakers页的样子。可以在视图文件里通过设置 RequireConsistentDisplayMode&为&false&来禁用视图中的连续显示模式。下面的标记位于&Views\Home\AllSpeakers.cshtml&文件中,&RequireConsistentDisplayMode&设为&false:@model IEnumerable&string&@{& & ViewBag.Title = &All speakers&;& & DisplayModeProvider.Instance.RequireConsistentDisplayMode =}创建移动演讲者视图就像刚看到的,演讲者视图可读性很强,但是链接很小,在移动设备上很难点到。本节将创建移动特定的演讲者视图,让它看起来像是个时髦的移动程序――显示大的,容易点击超链接并包含一个搜索框,可以快速找到演讲者。复制&AllSpeakers.cshtml&到&AllSpeakers.Mobile.cshtml。打开&AllSpeakers.Mobile.cshtml&文件并将&&h2&头元素移除掉。在&&ul&&标签里, 添加&data-role&属性并把它的值设为&listview。&像其他的&data-*&属性,&data-role=&listview&&使得大列表项更容易点击。完整的标记如下:@model IEnumerable&string&@{& & ViewBag.Title = &All speakers&;}&ul data-role=&listview&&& & @foreach(var speaker in Model) {& & & & &li&@Html.ActionLink(speaker, &SessionsBySpeaker&, new { speaker })&/li&& & }&/ul&刷新移动浏览器。更新后的视图如下:虽然移动视图改善了,但这么长的演讲者列表用起来还是很费劲。要修复这个缺陷,在&&ul&&标签里, 添加&data-filter&属性并设为&true。下面的代码演示了&ul&标记。&ul data-role=&listview& data-filter=&true&&下图演示了data-filter属性作用下的页面顶部的搜索过滤框。在搜索框里输入每一个字母, jQuery Mobile 都会过滤显示列表,如下图:改善标签列表正如默认的演讲者视图,标签视图也是可读性挺强的,但在移动设备上链接太小不容易点。本节将修复标签视图,就像修复演讲者视图一样。将&Views\Home\AllTags.Mobile.cshtml.hide&文件的“hide”后缀去掉,变为Views\Home\AllTags.Mobile.cshtml。打开重命名后的文件删掉&&h2&&元素。添加&data-role&和&data-filter&属性到&&ul&&标签中,如下:&ul data-role=&listview& data-filter=&true&&下图演示标签页以字母J过滤的结果:改善日期列表可以像改善演讲者和标签视图那样改善日期视图,这样在移动设备上更易用。复制&Views\Home\AllDates.cshtml&文件到&Views\Home\AllDates.Mobile.cshtml。打开新文件并删掉&h2&&元素。增加&data-role=&listview&&到&&ul&&标签中,如下:&ul data-role=&listview&&下图演示&data-role&属性下的日期页面:用下面的代码替换&Views\Home\AllDates.Mobile.cshtml文件中的内容:@model IEnumerable&DateTime&@{& & ViewBag.Title = &All dates&;& & DateTime lastDay = default(DateTime);}&ul data-role=&listview&&& & @foreach(var date in Model) {& & & & if (date.Date != lastDay) {& & & & & & lastDay = date.D& & & & & & &li data-role=&list-divider&&@date.Date.ToString(&ddd, MMM dd&)&/li&& & & & }& & & & &li&@Html.ActionLink(date.ToString(&h:mm tt&), &SessionsByDate&, new { date })&/li&& & }&/ul&这段代码将所有会议按日期分组。它为每一个新的日期创建一个分隔符,并在每一个分隔符下列出当天的所有会议。下面是代码运行后的样子:改善会议表视图本节将创建一个浏览器特定的会议视图。这里所做的更改将比之前做的更具扩展性。在移动浏览器中,点击Speaker按钮,然后在搜索框中输入&Sc&。点击&Scott Hanselman&链接。正如所见,显示的内容在移动浏览器中很难看。日期列很难看,标签列跑出视图外边了。要修复此缺陷,复制&Views\Home\SessionsTable.cshtml&到&Views\Home\SessionsTable.Mobile.cshtml,然后用下面的代码替换文件中的内容:@using MvcMobile.Models@model IEnumerable&Session&&ul data-role=&listview&&& & @foreach(var session in Model) {& & & & &li&& & & & & & &a href=&@Url.Action(&SessionByCode&, new { session.Code })&&& & & & & & & & &h3&@session.Title&/h3&& & & & & & & & &p&&strong&@string.Join(&, &, session.Speakers)&/strong&&/p&& & & & & & & & &p&@session.DateText&/p&& & & & & & &/a&& & & & &/li& & & & & & & & & & & & & & & & & & & & & & & & } & &&/ul&这段代码去掉了会议室和标签列,还垂直显示格式化后的标题,演讲者和日期,使得所有信息在移动浏览器中都有很强的可读性。下图演示代码改后的样子:改善 SessionByCode 视图最后,创建一个移动特定的SessionByCode视图。在移动浏览器里,点击Speaker按钮,然后再搜索框输入&Sc&。点击&Scott Hanselman&链接, Scott Hanselman的会议就显示出来了。选择&An Overview of the MS Web Stack of Love&链接。桌面视图看起来也还好,但还可以改善。复制&Views\Home\SessionByCode.cshtml&到&Views\Home\SessionByCode.cshtml&并用下面的代码替换&Views\Home\SessionByCode.Mobile.cshtml&文件中的内容:@model MvcMobile.Models.Session@{& & ViewBag.Title = &Session details&;}&h2&@Model.Title&/h2&&p&& & &strong&@Model.DateText&/strong& in &strong&@Model.Room&/strong&&/p&&ul data-role=&listview& data-inset=&true&&& & &li data-role=&list-divider&&Speakers&/li&& & @foreach (var speaker in Model.Speakers) {& & & & &li&@Html.ActionLink(speaker, &SessionsBySpeaker&, new { speaker })&/li&& & }&/ul&&p&@Model.Description&/p&&h4&Code: @Model.Code&/h4&&ul data-role=&listview& data-inset=&true&&& & &li data-role=&list-divider&&Tags&/li&& & @foreach (var tag in Model.Tags) {& & & & &li&@Html.ActionLink(tag, &SessionsByTag&, new { tag })&/li&& & }&/ul&代码里用&data-role&属性来改善视图的布局。刷新移动浏览器。下图演示代码修改后的结果:总结与复习本文介绍了ASP.NET MVC 4的移动特性。包括:重写布局,视图和部分视图的能力,包括全局地和个别的视图。用 RequireConsistentDisplayMode&属性控制布局。可以在桌面视图和移动视图间进行切换的开关小工具。支持特定浏览器,如iPhone浏览器。

我要回帖

更多关于 去掉页眉页脚 的文章

 

随机推荐