[ASP.NET MVC] Razor 布局
整体视图模板
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 布局的更多相关文章
- asp.net mvc razor布局页中a标签的href的跳转问题
笔者做了一个文件上传系统,文件上传后,保存在wwwroot目录的file文件夹中,并把该文件的路径保存到数据库中, 如这样的一个路径保存在数据库: file/b775f487-0127-41e0-9d ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
- ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 布局视图 上一章节中我们学习了如何使用 EF ...
- ASP.NET MVC Razor语法
ASP.NET MVC Razor语法 (一) 关于_ViewStart.cshtml文件 使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件.事实上,_View ...
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...
- ASP.NET MVC Razor
Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...
- ASP.NET MVC Razor视图引擎攻略
--引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%>&l ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...
- ASP.NET MVC——Razor视图引擎
Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...
随机推荐
- NLPIR大数据挖掘平台新增敏感词扫描功能
在网络日益发达的现在,也伴随着有益信息与造成不稳定因素的信息也随之日益泛滥,为了网民的思想健康,也为了社会的和谐,在许多对外公共场合下,有些内容是要经过审查才能显示的.在网络审查初期,都是通过人工审核 ...
- React Native编译器的配置以及基础知识
入职新公司,这边打算采用RN来写界面,所以学习一波这一块的知识. 采用的是WebStorm来编译,据同事说,比他采用atom编译要多很多语法提示. 下载地址:https://www.jetbrains ...
- 使用Spring Cloud和Docker构建微服务架构
原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do 作者:Alexander Lukyan ...
- 最小生成树详解 prim+ kruskal代码模板
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...
- 使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- MongoDB3.4安装配置以及与Robomongo1.1的连接——解决Authentication Failed导致的不能连接问题
本文环境:win10(64)+MongoDB(3.4.5)+Robomongo(1.1) 目录: MongoDB的安装 MongoDB的配置 Robomongo的安装以及与MongoDB的连接 一些新 ...
- 让你的Dapper像EF一样调用 开源~!
什么是Dapper? Dapper是一款轻量级的ORM框架,大名鼎鼎! 由谷歌Google 开发,在N款orm框架中 效率是最快的 最高的! 经过数据测试 比EF快 12-20 倍 国外最大的技术网站 ...
- 20. Valid Parentheses【leetcode】
20. Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...
- Oracle 外键约束
本文讨论一下Oracle中的外键约束问题,以及和DB2中的小不同. 首先创建测试环境. -- 创建测试主表. ID 是主键. CREATE TABLE test_main ( id INT, valu ...
- c++类大小问题
1.空类 class A { }; 解析:类的实例化就是为每个实例在内存中分配一块地址:每个类在内存中都有唯一的标识,因此空类被实例化时,编译器会隐含地为其添加一个字节,以作区分. 2.虚函数类 cl ...