这一节演示下MVC3中怎样使用模板页,在传统的webform设计模式中,我们使用masterpage作为模板页,在MVC3 razor视图设计中,我们使用另一种方式作为模板页。

新建一个MVC3项目,在解决方案资源管理中,我们可以看到VIEWS文件夹下面有一个Shared文件夹。在Shared文件夹里面有一个_Layout.cshtml页面。这个就是项目中默认的模板页面。如下图

1.新建内容页

内容页在MVC3中也叫做视图布局页,可以右键选中视图文件夹,通过添加视图来添加内容页,然后选择相应的模板。下面就是我们创建的内容页ViewPageOne.cshtml

使用模板页的页面,会自动在页面中生成代码。来指定模板页,使用Layout来指定具体的模板页。如果内容页中没有Layout属性,则使用的是默认的模板页

  1. @{
  2. ViewBag.Title = "ViewPageOne";
  3. Layout = "~/Views/Shared/_Layout.cshtml";
  4. }
  5. <h2>ViewPageOne</h2>

如果Layout指定为null,则表示不使用模板页

  1. @{
  2. ViewBag.Title = "ViewPageOne";
  3. Layout = null;
  4. }

2.新建模板页

右键选择Shared文件,然后在菜单中选择添加 新建项,弹出添加新项对话框,然后选择MVC3布局页,这样就添加完成了布局页,下面的我们添加的布局页_LayoutPageOne.cshtml

3.为某个文件单独指定模板页

假如某个页面不想使用默认的模板页,可以单独为其指定模板页,下面的代码把内容页的模板页指定为刚创建的模板页_LayoutPageOne.cshtml

  1. @{
  2. ViewBag.Title = "ViewPageOne";
  3. Layout="~/Views/Shared/_LayoutPageOne.cshtml";
  4. }
  5. <h2>ViewPageOne</h2>

4.为某个视图文件夹指定模板页

假如想让一个Controller下面的所有视图使用同一个模板文件,可以在该Controller对应的试图文件夹下面创建一个_ViewStart.cshtml文件,然后在_ViewStart.cshtml里面指定所使用的模板页

  1. @{
  2. Layout = "~/Views/Shared/_LayoutPageOne.cshtml";
  3. }

这样就可以把一个controller下面的视图指定为使用一个模板文件

5.页面不使用模板页

如果一个内容页面不想使用模板页,可以把_Layout设置为null

也可以在添加视图页面的时候不选择模板。

6.@RenderBody()

@RenderBody()在模板页中使用表示内容页在模板中的位置。当创建具有模板页的内容页的时候,内容页就呈现在模板页中@RenderBody()所在的位置,

一个模板页中只能有一个@RenderBody().

7.@RenderSection

@RenderSection用于在模板布局中定义一个区域,在内容页可以定义一些内容来填充这个区域,例如内容页中引用的JS文件,可以填充到模板页的section位置。每个内容页的单独一些信息,可以在模板页中这个区域显示。

@RenderSection有连个参数,第一个参数用于定义section的名称,第2个参数是布尔类型,如果为TRUE,表示内容页必须定义这个section,如果为false,则表示内容页可定义section,也可以不定义.

模板页

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>欢迎 @ViewBag.Title</title>
  5. </head>
  6. <body>
  7. <p>第2个模板页</p>
  8. <div>
  9. @RenderBody()
  10. </div>
  11. <div>
  12. 备注:
  13. @RenderSection("Remark", false);
  14. </div>
  15. </body>
  16. </html>

内容页

  1. @{
  2. ViewBag.Title = "主页";
  3. }
  4. <h2>@ViewBag.Message</h2>
  5. <p>
  6. 若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。
  7. </p>
  8. @section Remark
  9. {
  10. 我是主页
  11. }
  12. <p>欢迎</p>

8.@RenderPage

@RenderPage用于表示在一个页面中呈现另一个页面的内容.参数指定要呈现的网页的位置。

我们在Shared文件夹下面新建一个footer.cshtml文件,然后里面写上版权信息,然后在模板页中开辟一块位置用来呈现footer页面,

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>欢迎 @ViewBag.Title</title>
  5. </head>
  6. <body>
  7. <p>第2个模板页</p>
  8. <div>
  9. @RenderBody()
  10. </div>
  11. <div>
  12. 备注:
  13. @RenderSection("Remark", false);
  14. </div>
  15. <footer>
  16. @RenderPage("~/Views/Shared/footer.cshtml")
  17. </footer>
  18. </body>
  19. </html>

9.@Html.Partial()与Html.RenderPartial()
   .@Html.Partial()与Html.RenderPartial()这两个方法可以用来输出一个分部页,右键添加新建项,选择MVC3分部页,就可以添加一个分部页,相当于一个用户控件,

这时候就可以使用者两个方法来输出分部页的内容,当然,这两个方法也可以直接输出视图页和内容页。

@Html.Partial()的参数为用户控件名称,也就是分部页名称,返回值为string类型,可以直接输出。

@Html.RenderPartial()的参数也为用户控件名称,返回值为VOID,调用的时候直接把内容输出到Response中。

用法如下:

    1. <div id="logindisplay">
    2. @Html.Partial("_PartialLogin")
    3. @{
    4. Html.RenderPartial("_PartialLogin");
    5. }

ASP.NET MVC3细嚼慢咽---(2)模板页的更多相关文章

  1. ASP.NET MVC3细嚼慢咽---(1)网站创建与发布

      这一节我们演示下怎样使用VS2010创建与发布MVC3建立的网站.使用VS2010创建MVC3.0网站,需要下载MVC3.0的安装包,这个大家可以去网络上下载.     1.项目创建       ...

  2. [ASP.NET]书店后台开发-模板页

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="admin.master.c ...

  3. ASP.NET MVC3细嚼慢咽---(3)Razor视图语法

    MVC3.0中新增加了Razor视图,Razor视图的语法以@符号为核心,貌似在这个时代离不开@了,微博,邮箱都用这个. 1.输出变量和文本 @DateTime.Now @for (int i = 0 ...

  4. ASP.NET MVC中切换模板页(不同目录的cshtml文件)

    看来以后建立一个父类控制器还是有必要的... using System;using System.Collections.Generic;using System.Linq;using System. ...

  5. ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

  6. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

  7. 区域、模板页与WebAPI初步

    区域.模板页与WebAPI初步 一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域( ...

  8. ASP.NET MVC3 模板页的使用

    占位符的使用: 下面是一个模板页 _Layout.cshtml <!DOCTYPE html> <html> <head> @RenderSection(" ...

  9. MVC3 模板页页预留Section

    一.模板页 Razor出现后我们就可以选择不再使用asp.net master 模板页.取而代之的是cshtml razor的模板文件.用法个人认为还是和master模板页类似.但在mater模板页的 ...

随机推荐

  1. SVN查看提交日志的命令

    Windows下,使用svn客户端查看日志很方便,但是如果在linux下,常规查看日志的命令对于日志记录数比较多的时候,屏幕显示不了,就比较麻烦,后来发现了一个很有用的参数可以限制要查看的记录条数 查 ...

  2. Raphael:JS矢量图形库

    Raphael:JS矢量图形库 2016-08-29 http://dmitrybaranovskiy.github.io/raphael/

  3. .NET高端职位招聘要求

    系统架构师: 1.硕士及以上学历,博士有项目成果者优先: 2.五年以上工作经验,三年以上互联网经验,一年以上大型软件项目总体设计.分析.架构经验,有移动互联网或云计算虚拟化系统设计开发经验者优先: 3 ...

  4. java StringBuffer与StringBuilder

    StringBuffer:就是字符串缓冲区.         * 用于存储数据的容器.         * 特点:         * 1,长度的可变的.          * 2,可以存储不同类型数 ...

  5. H5 App设计者需要注意的21条禁忌

    我们通常在做H5 APP设计的过程中,遇到很多看似很小,且很容易被忽略的问题,正是这些小问题,一次次的撩拨用户的耐心,让用户对你的APP心生怨念.现在WeX5君呕血为大家整理出H5 APP设计的21条 ...

  6. jquery 里面的$(document).ready 和 DOMContentLoaded

    DOMContentLoaded 事件是当页面的初始dom tree加载好了就会执行. 而不会去等待外部的css 渲染完成和 js执行完成,即下图中的DOM Tree阶段 DOMContentLoad ...

  7. CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法

    CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的username@hos ...

  8. 关于php程序员 解决问题的能力

    转载于 :http://www.tuicool.com/articles/qeUfEf 这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高.解决问题 ...

  9. ASP.NET MVC Spring.NET NHibernate 整合

    请注明转载地址:http://www.cnblogs.com/arhat 在整合这三个技术之前,首先得说明一下整合的步骤,俗话说汗要一口一口吃,事要一件一件做.同理这个三个技术也是.那么在整合之前,需 ...

  10. hdu 1255 覆盖的面积 (线段树处理面积覆盖问题(模板))

    http://acm.hdu.edu.cn/showproblem.php?pid=1255 覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memo ...