ASP.NET MVC5 视图相关学习
MVC Razor模板引擎中3个重要的方法:@RenderBody、@RenderPage、@RenderSection
1、@RenderBody
在Razor引擎中布局页面类似于asp.net中的母版页功能,视图的内容会和布局页面合并呈现。
当前视图内容会通过布局页面(Shared/_Layout.cshtml) 中的@RenderBody()方法呈现在标签之间。
默认布局页面设置:
_ViewStart.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
当创建新视图时,不指定任何布局页面,默认会加载_ViewStart.cshtml中指定的布局页面。
如果不想使用默认布局页,可以在当前视图中设置Layout值,设置null不使用任何布局页。
注意:如_ViewStart.cshtml都是特定的名字,已下划线开头的都有特殊的意义。
2、@RenderPage
要引用呈现的视图,如网站头部、底部可单独放在一个共享的视图文件夹中,然后在布局页中使用。
方法调用,用法如下:
@RenderPage("~/Views/Shared/_Header.cshtml")
带参数
@RenderPage("~/Views/Shared/_Header.cshtml",new{name="tom",age=18)
调用页面获取参数:
//获取 RenderPage() 传递过来的参数
@PageData["name"]
3、@RenderSection
此方法就是在Layout布局页中定义了分段,留给使用该布局页的视图来实现。
也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”)
@RenderBody()
@RenderSection(“footer”)
当然还要在视图中定义节,否则会出现异常:
@section footer {
Footer Here
}
为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:
@RenderSection(“footer”, false)
ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
1、带有Render的办法返回值是void,在办法内部进行输出;不带的返回值类型为MvcHtmlString,所以只能如许应用:
@Html.Partial 对应 @{Html.RenderPartial(....);}
@Html.Action 对应 @{Html.RenderAction(....);}
2、Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,然后把产生的页面带回到本来的View中再回传。而Partial、RenderPartial直接加载视图文件内容
使用方法:@Html.Action(action,
controller)加载局部页面。
例如在模板页中使用:@Html.Action("Contact",
"Company")
在CompanyController中有如下方法:
public PartialViewResult Contact()
{
return PartialView();
}
3、 Html.Partial可以直接供给用户控件名作为参数,而Html.Action须要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。
4、对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于须要设置一些Model的用户控件,推荐应用Html.Action。当然,有Model数据也是可以应用Html.Partial办法的,可以看办法的重载。
5、应用Html.Action有个益处,就是可以按照不合的场景选择不合的用户控件。
比如:
@Html.Action("UserInfoControl")在对应的UserInfoControl这个Action中,在用户未登录的时辰,可以retun PartialView("LogOnUserControl");登录后,可以retun PartialView("UserInfoControl");
RenderPage()和RenderPartial()的区别:
RenderPage()调用的页面只能使用其传递过去的数据。
RenderPartial()是可以使用viewdata,model等数据的。
如:@{Html.RenderPartial("BasicChart",model);}
用这个重载可以在部分视图里使用强类型,然后在主视图中使用第二个参数传model过去
@{Html.RenderPartial("BasicChart",ViewData["myData"]);}
Html.RenderPartial和Html.RenderAction的区别:
Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的UserControl也适合使用。
Html.RenderAction则会先去请求Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。
最新文章
- Autofac 组件、服务、自动装配 《第二篇》
- Wishart distribution
- javaweb学习总结(三十八)——事务
- Linux(Centos)之安装Java JDK及注意事项
- iOS进阶篇索引,标记和自定义的table
- 对部分Java名词的总结
- JavaScript语言知识收藏
- Tex使用
- hdu 4144 状态压缩dp
- 谈网页游戏外挂之用python模拟游戏(热血三国2)登陆
- 纯JS写最简单的图片轮播
- JSP的四个作用域
- Linux命令pmap
- ZOJ 4070 - Function and Function - [签到题][2018 ACM-ICPC Asia Qingdao Regional Problem M]
- ES5之函数的间接调用 ( call、apply )、绑定 ( bind )
- wpf数据绑定 - StringFormat的妙用
- 深入理解bootstrap框架之第二章整体架构
- 传参方法:sharedApplication, NSUserDefaults, protocol 和 delegate(实例)
- BZOJ 1977 严格次小生成树
- vmware中安装centos 6.7
热门文章
- 三角剖分算法(delaunay)
- Hadoop单机安装配置过程:
- 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
- Erlang语言学习入门
- WEB安全番外第三篇--关于XXE
- [黑金原创教程] FPGA那些事儿《设计篇 II》- 图像处理前夕·续
- spring could Windows打包构建docker镜像到linux
- poj3735—Training little cats(特殊操作转化为矩阵操作)
- Oracle 删除表
- Yii2 里使用Redis扩展