整体视图模板

View模板会先找到对应的controller文件,再找此文件下的Shared文件夹。

比如项目最外层的View/Shared 目录下有一个_Layout.cshtml模板页,有这样代码:

@{
ViewBag.Tile="我是模板页面";
}
<body>
<h2>我是主页面的模板代码</h2> @*此处为模板占位符*@
@RenderBody() </body>

在HomeController新建一个Action方法

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}

添加Index视图。

@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "某个子页面";
}
<h2>hell,我是子页面</h2>

运行:

 其次,模板页还可以设置多个不同的占位符,如RenderSection渲染节点。

代码如下:

子页面:

运行结果:

ViewStar

使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件,无论你要呈现哪个视图之前,_Viewstart.cshtml中的代码总会被先执行。优先于同目录及子目录下的任何视图代码。

_ViewStart.cshtml中的代码如下,会为所有的视图都添加相同的默认的视图布局,如果某个子视图页面不想用此代码模板,可以重写Layout,或是直接不用视图模板,“Layout=null ”即可。

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}

部分视图

加载部分视图有许多方法。

  • Html.Partial和Html. RenderPartial

  语法:@Html.Partial( "Page12" );  @{  Html.RenderPartiall( "Page12" ) }

  传参版本:Html.RenderPartial("usercontrolurl", model, ViewDataDictionary);@{Html.RenderPartial("BasicChart",ViewData["myData"]);}

var data = new ViewDataDictionary();
data.Add("key", "value");
Html.RenderPartial("usercontrolurl", model, data);

       区别:Partial是将视图内容直接生成一个字符串(MvcHtmlString)并返回,有个转义的过程,效率较低。

     RenderPartial方法是直接输出至当前 HttpContext,性能较好。

  • Html.Action和Html.RenderAction

  语法:@Html.Action( "Page12" );  @{  Html.RenderAction( "Page12" ) }

  传参版本:@Html.Action("视图","控制器",new { param1 = "abc", param2 = "def" }),@{  Html.RenderAction("Menu",new{ Stu=new Student{age=“12”,name=“sb”}})  }

  区别:同上

  • Html. RenderPartial和Html.RenderAction

  区别RenderPartial不需要去创建Controller的Action方法,而RenderAction需要创建Action方法,会先去调用Action方法在呈现视图。如果部分视图仅仅是Html代码,不需要重新读取新的数据,RenderPartial即可,可以传相应的molde或参数到部分视图中。或者部分视图需要通过读取数据库来重新渲染,就应该使用RenderAction

  •  Aciton方法可以通过PartialView方法以PartialViewResult形式返回局部视图
public ActionResult Menu(){
var men=GetMenuList();
return PartialView(men);
}

读自《ASP.NET MVC 企业级实战》

[ASP.NET MVC] Razor 布局的更多相关文章

  1. asp.net mvc razor布局页中a标签的href的跳转问题

    笔者做了一个文件上传系统,文件上传后,保存在wwwroot目录的file文件夹中,并把该文件的路径保存到数据库中, 如这样的一个路径保存在数据库: file/b775f487-0127-41e0-9d ...

  2. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理

    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染   对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...

  3. ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 布局视图 上一章节中我们学习了如何使用 EF ...

  4. ASP.NET MVC Razor语法

    ASP.NET MVC Razor语法 (一) 关于_ViewStart.cshtml文件     使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件.事实上,_View ...

  5. Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html

    Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...

  6. ASP.NET MVC Razor

    Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...

  7. ASP.NET MVC Razor视图引擎攻略

    --引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%>&l ...

  8. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染

    对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...

  9. ASP.NET MVC——Razor视图引擎

    Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...

随机推荐

  1. 【原创】Easyui tree filter 过滤本地数据无效的原因

    Easyui tree filter 过滤本地数据无效的解决方式    正确使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  2. Redis-消息发布与订阅

    redis的消息发布与订阅适合做在线聊天, 消息推送 使用方法: 发布端: publish +频道名称 + 发布内容 订阅端: subscribe + 频道名称 发布端例子: 127.0.0.1:63 ...

  3. inet_ntoa将客户端的IP和port写入M…

    问题:inet_ntoa将客户端的IP和port写入MYSQL中的解决方法和遇到的问题

  4. 到底什么样的企业才适合实施SAP系统?

    SAP系统作为全宇宙第一的ERP,号称世界500强里面有80%的企业部署了SAP系统,总部位于德国沃尔多夫市,在全球拥有6万多名员工,遍布全球130个国家,并拥有覆盖全球11,500家企业的合作伙伴网 ...

  5. C# 将数据表导出到Excel通用方法

    DataGrid dg = new DataGrid(); dg.DataSource = dt; dg.DataBind(); Response.Clear(); Response.Buffer = ...

  6. kickstart自动化安装--tftp+nfs+dhcp

    使用kickstart实现Centos 自动化安装 Kickstart自动化安装简介: 规模化:同时装配多台 服务器 自动化 :安装系统,配置各种服务 远程实现:不需要光盘,U盘等安装介质 优势: ( ...

  7. Mybatis 调用存储过程,使用Map进行输入输出参数的传递

    做个记录,以备后用 java代码: public String texuChange() throws Exception {        try {                         ...

  8. 多人开发的git项目如何保持提交日志为一条直线?

    多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...

  9. java项目编码格式转换(如GBK转UTF-8)

    昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码 ...

  10. 基于spring mvc的图片验证码实现

    本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...