整体视图模板

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. div标签清除float浮动样式方法

    方法一. 这个方法来源于positioniseverything ,通过after伪类实现,完全兼容当前主流浏览器. 1 <style type="text/css"> ...

  2. 关于SQL语句条件值写中文查不到的问题

    在使用jdbc链接MySQL执行SQL语句的时候,sql语句中的where条件,参数值带中文,则查询不到结果,而where条件,参数值都为数字或字母时可以正常查询, 原因是mysql的characte ...

  3. 基于.NET CORE微服务框架 -Api网关服务管理

    1.前言 经过10多天的努力,surging 网关已经有了大致的雏形,后面还会持续更新完善,请大家持续关注研发的动态 最近也更新了surging新的版本 更新内容: 1. 扩展Zookeeper封装2 ...

  4. M3

    一,使用媒体查询的三种方式 1.直接在CSS中使用:   @media 类型:(长选用all/screen)and  (条件1)and(条件2){ CSS选择器{    CSS属性:属性值 } }   ...

  5. python实战===使用smtp发送邮件的源代码,解决554错误码的问题,更新版!

    import smtplib from email.mime.text import MIMEText from email.header import Header import time #密文输 ...

  6. 社交系统ThinkSNS+ 发布通知!

    社交系统ThinkSNS 最新版本ThinkSNS+将于7月15日正式发布开源版本web+H5,同时发布Android APP和iOS APP.我们将告别内测阶段,正式对外发布. 没错,你们没看错,就 ...

  7. C#内存管理解析

    前言:对于很多的C#程序员来说,经常会很少去关注其内存的释放,他们认为C#带有强大的垃圾回收机制,所有不愿意去考虑这方面的事情,其实不尽然,很多时候我们都需要考虑C#内存的管理问题,否则会很容易造成内 ...

  8. Fedora删除旧版本内核

    由于Fedora升级非常快,因此非常有必要清除陈旧的内核,否则的话,每次登录系统会出现多个引导项,看着烦人也占用内存: 1.查看当前使用的内核 [root@w ~]# uname -r 4.9.14- ...

  9. iOS 工程自动化 - 思路整理

    4 月份参加 2017@Swift 大会的时候有幸听到了 @zesming 大佬关于美团组件化的 Topic,有一张图印象特别深刻. 来自 @zesming 大佬 后来跟 @zesming 大佬沟通怎 ...

  10. 【Centos7 GRUB】修改开机等待时间

    centos7与之前版本不同,在/boot/grub/下没有 grub.conf文件,但在/etc/grub2/grub.cfg可找到帮助信息 [root@za default]# cat /boot ...