Mvc4_ActionLink跟@RenderBody ,@RenderPage
. @Html.ActionLink("该链接要显示的文字A","对应的控制器方法B");会生成:<a href="C/B">A</a> 默认控制器为当前页面的控制器
.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B","指定了控制器名称C");会生成:<a href='C/B'>A</a>
.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B",new{id=});会生成:<a href ='C/B/1'>A</a>
.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B",new{id=},new {target='_blank'}); 会生成:<a href="C/B/1" target="_blank">A</a> 假如写成:new{target='_blank',class="className"}要报错 因为class是关键字,应该写成:@class="className"。
.@Html.ActionLink("该链接要显示的文字A","对应的控制器方法B","对应的控制器C","routeValues 传的 new{id=1}","htmlAttrib @class='className'");包含了所有的类型参数
@html.ActionLink的几种参数格式:
Razor模板引擎 @RenderBody ,@RenderPage
1.@RenderBody()
当创建基于Layout.cshtml布局页面的视图时候,视图的内容跟布局页面合并。而创建的新视图内容会通过Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间
2.@RenderPage()
这个方法是要呈现一个页面,比如网页中固定头部的可以单独放在一个共享的视图文件里,然后在布局页面通过这个方法调用:
@RenderPage("~/Views/Shared/Err.cshtml");
带参数:@RenderPage(~/Views/Shared/Err.cshtml",new{id=0,name="ing"});
获取RenderPage()传递过来的参数:@PageData["param"]
3.RenderSection()
布局页面还有节Section的概念,如果某个视图模板中定义了一个节,那么久可以把它单独呈现出来,为了防止缺失节而出现异常,可以给RenderSection()提供俩个参数。
@RenderSection("head",false);
或
@if(IsSectionDefined("head"))
{
@RenderSection("head",false);
}else{
<p>No</p>
}
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4..min.js")" type="text/javascript"></script>
@RenderSection("head", required: true)@*View页面自定义特定js/css使用*@
<body>
@RenderPage("~/Views/Shared/_Header.cshtml")
@RenderBody()
</body>
例子
4.@Html.Partial
每次创建自己的TextWriter实例并且把内容缓存在内存里面,最后把所有Writer输出的内容发送到一个MvcString中
经常用@{Html.RenderPartial("A");}而不是@Html.Partial
Html.RenderPartial()跟@Html.Partial的区别:
Html.RenderPartial直接输出到当前HttpContext(因为是直接输出所以性能好)
Html.Partial将视图内容直接生成一个字符串并返还(相当于有个转义的过程)
RenderPage()和RenderPartial()的区别:
RenderPage()调用的页面只能使用其传递过去的数据
RenderPartial()是可以使用ViewData,Model等数据的
如:@{Html.RenderPartial("A",model);}用这个重载可以在部分视图使用强类型,然后在主视图使用第二个参数传model过去 @{Html.RenderPartial("A"ViewData["B"]);}
Html.RenderPartial和Html.RenderAction的区别:
Html.RenderPartial适合用在重复的UserControl,并且只需要透过Model来呈现内容,或者对于广告的UserControl也合适用。
Html.RenderAction则会先去呼叫Controller的Action方法,如果UserControl是需要透过资料库(Action)取得信息来呈现,此时就比较合适使用此方法
注:
1.带有Render的方法返回值都是void,在方法内部进行输出,不带返回值类型为MvcHtmlString 例:
@Html.Partial对应@{Html.RenderPartial(xxx);}
@Html.Action对应@{Html.RenderAction(xxx);}
2.Html.Partial可以直接提供用户控件名作为参数,而Html.Action需要对应的Action,在Action内部返回PartailResult(即return PartialView()).
3.对于简单没有任何逻辑的用户控件 推荐用Html.Partial;对于需要设置一些Model的用户控件,用Html.Action。当然 ,有Model数据也是可以用Html.Partial方法的,可以看方法的重载
4.使用Html.Action有个好处:可以根据不通过的场景选择不通的用户控件:
@Html.Action("AControl")
在对应的A这个Action中,在用户没有登录的时候,可以用return PartialView("BControl");登录后,可以 return PartialView("AControl");
Mvc4_ActionLink跟@RenderBody ,@RenderPage的更多相关文章
- RenderBody, RenderPage and RenderSection methods in MVC 3
原文地址:http://www.codeproject.com/Articles/383145/RenderBody-RenderPage-and-RenderSection-methods-in R ...
- ASP.NET MVC3 局部页面@RENDERBODY @RENDERPAGE@RENDERSECTION使用方法详细说明
转载自:http://blog.163.com/wenchangqing_live/blog/static/173722309201211299817278/ asp.net mvc3局部页面使用方法 ...
- MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)
一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 @RenderBody 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合 ...
- RenderBody,RenderPage和RenderSection
1. RenderBody 在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到<body>标签里 ...
- 【ASP.NET】@RenderBody,@RenderPage,@RenderSection的使用
@RenderBody @RenderBody是布局页(_Layout.cshtml)通过占位符@RenderBody占用独立部分,当创建基于此布局页的试图时,视图的内容会和布局页合并,而新创建的视图 ...
- ASP.NET MVC之Layout布局与@RenderBody、@RenderPage、@RenderSection
@RenderBody @RenderBody是布局页(_Layout.cshtml)通过占位符@RenderBody占用独立部分,当创建基于此布局页的试图时,视图的内容会和布局页合并,而新创建的视图 ...
- MVC - 知识点
1. @Styles.Render("~/Content/css") 是怎么工作的? 在App_Start文件夹里面的BundleConfig.cs中定义了StyleBu ...
- Asp.net mvc 知多少(四)
本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...
- ASP.NET MVC学习(四)之视图View
1.视图 2.强类型视图 3.@RenderSection("HeaderSection", false) @RenderBody() 4.子行为 5.ASP.NET MV ...
随机推荐
- 【20160924】GOCVHelper 图像增强部分(3)
//顶帽去光差,radius为模板半径 Mat moveLightDiff(Mat src,int radius){ Mat dst; Mat srcclone ...
- Animator角色重复受击播放问题
需要指定开始时间参数,否则Animator会默认当前已经在播放这个动画而忽略掉 CrossFade一样 gif: public class AnimatorDebug : MonoBehaviour ...
- hdu 3398
String Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 2010noip提高组解题报告
https://www.luogu.org/problem/show?pid=1514 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 ...
- 零零碎碎写的shell脚本(二):一键修改网络配置信息脚本
#!/bin/bash ip_mod=$ mask_mod=$ gw_mod=$ dns_mod=$ hostname_mod=$ hosts=/etc/hosts ifcfg=/etc/syscon ...
- 非在线方式搭建Android开发环境
android 环境搭建 http://jingyan.baidu.com/article/90895e0fba1b5664ed6b0b7e.html android开发环境的搭建(解决sdk下载更新 ...
- 蒙特卡洛法计算定积分—Importance Sampling
如上图所示,计算区间[a b]上f(x)的积分即求曲线与X轴围成红色区域的面积.下面使用蒙特卡洛法计算区间[2 3]上的定积分:∫(x2+4*x*sin(x))dx # -*- coding: u ...
- Struts2-S2-032远程命令执行EXP
看到网上好多写的EXP有后门啊 还是自己写个吧! 工具下载:链接: http://pan.baidu.com/s/1miRbi2k 密码: fzfv
- linux包的相关命令
apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...
- ABAP Enhancement:第一部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...