RenderPartial和RenderAction区别
本篇参考了Shailendra Chauhan和 Jag Reehal的博文。
RenderParital和RenderAction的共同点:
※ 都能返回部分视图
※ 返回的部分视图和主视图共用一个TextWriter对象把内容写到Http Response中
什么时候使用Html.RenderPartial
当部分视图中的数据是主视图的一部分,即部分视图的Model是主视图Model的一个集合类型属性的时候,倾向于用Html.RenderPartial。
就像如下为了展示主视图view model的一个集合类型属性IEnumerable<Comment> Comments,就把这里的Comment作为部分视图的Model。
□ domain model
public class Post
{
public string Title { get; set; }
public string Content { get; set; }
public DateTime DatePublished { get; set; }
}
public class Comment
{
public string Content { get; set; }
public string Author { get; set; }
public string ImageUrl { get; set; }
public DateTime DateCreated { get; set; }
}
□ view model
public class ShowPostViewModel
{
public Post Post { get; set; }
public IEnumerable<Comment> Comments { get; set; }
}
□ Controller
public ActionResult Index()
{
//view model
ShowPostViewModel viewModel = new ShowPostViewModel();
viewModel.Post = new Post
{
Title = "今晚广州恒大将开始2014亚冠联赛之旅",
Content = "创业难守业更难,广州恒大能否卫冕成功,让我们拭目以待!",
DatePublished = new DateTime(2014,2,26)
};
viewModel.Comments = new List<Comment>
{
new Comment()
{
Author = "广州球迷",
Content = "广州未赢够",
DateCreated = new DateTime(2014,2,26)
},
new Comment()
{
Author = "山东球迷",
Content = "今天看我们大鲁能",
DateCreated = new DateTime(2014,2,26)
}
};
return View(viewModel);
}
□ _Comments部分视图
@model IEnumerable<RenderPartialAndRenderAction.Models.Comment>
@foreach (var comment in Model)
{
@comment.Author @:在 @comment.DateCreated.ToLongDateString() 发表评论:
@comment.Content
<hr/>
}
□ Index视图
@model RenderPartialAndRenderAction.Models.ShowPostViewModel
<div>
<h1>@Model.Post.Title</h1>
提交日期 @Model.Post.DatePublished.ToLongDateString() <br/>
@Model.Post.Content <br/>
评论数: @Model.Comments.Count()
<hr/>
@{Html.RenderPartial("_Comments",Model.Comments);}
</div>
□ 结果

什么时候用Html.RenderAction
当部分视图的数据,相对来说,与主视图的关系比较独立,或者在多个主视图页面被用到(比如,可以放到_Layout.cshtml中),用Html.RenderAction比较适合。
就像如下的AnotherViewModel与如上的ShowPostViewModel,相对关系不大。我们就通过或Html.RenderAction来获取有关AnotherViewModel的部分视图。
□ domain model
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
□ view model 增加一个用于显示类别的view model
public class AnotherViewModel
{
public string StringToOutput { get; set; }
public IEnumerable<Category> Categories { get; set; }
}
□ Controller,RenderAction("action方法","controller名"),这里的action方法必须打上[ChildActionOnly]
[ChildActionOnly]
public ActionResult ShowCate()
{
var viewModel = new AnotherViewModel
{
StringToOutput = "所有类别",
Categories = new List<Category>
{
new Category()
{
Name = "类别1"
},
new Category()
{
Name = "类别2"
}
}
};
return PartialView(viewModel);
}
□ 视图
<div>
<h1>@Model.Post.Title</h1>
提交日期 @Model.Post.DatePublished.ToLongDateString() <br/>
@Model.Post.Content <br/>
评论数: @Model.Comments.Count()
<hr/>
@{Html.RenderPartial("_Comments",Model.Comments);}
<h5>@{Html.RenderAction("ShowCate");}</h5>
</div>
□ 效果

Html.Partial和Html.Action
Html.Partial和Html.Action相同之处:
※ 返回值都是HtmlString
※ 返回值都都可以赋值给变量
Html.Partial和Html.Action不同之处:
※ 与Html.RenderPartial和Html.RenderAction类似。
RenderPartial和RenderAction区别的更多相关文章
- asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别
转载自 : <asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别> 先复制过来 ...
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 对这四个的区别做一个总结,清理一下思路 ...
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)
mvc renderaction renderpartial 杂谈 Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. ...
- MVC中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. 1. Html.RenderPartial是直接将用户控件嵌入到界面上: <% ...
- Partial RenderPartial Action RenderAction 区别和用法
区别: 1.Partial 与 RenderPartial 两个方法性质基本一样,只是把一个静态用户控件给嵌入进来. 2.Partial 回传一堆html代码,直接写进到页面上@Html.Partia ...
- Asp.Net MVC3.0 Partial RenderPartial Action RenderAction 区别和用法
本人写的博文不多,专业知识不强,以下纯属于个人笔记.如有不对,还请各路大拿,拍砖指导,谢谢! 区别: 1.Partial 与 RenderPartial 两个方法性质基本一样,只是把一个静态用户控件给 ...
- Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】
Html.partial和RenderPartial的用法与区别Html.partial和RenderPartial都是输出html片段,区别在于Partial是将视图内容直接生成一个字符串并返回(相 ...
- Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法(mvc部分视图的添加)
Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回 ...
- Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法
Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回 ...
- asp.net MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
@Html.Action:需要有对应的Action,并且Action方法有返回值.(注:处理完业务逻辑同时,也需要返回所需值) @{Html.RenderAction}:需要有对应的Action,Ac ...
随机推荐
- 两种常量类型-readonly和const
C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景. 工作原理 readonly 为运行时常量(动态常量), ...
- FFT(快速傅里叶变换)摘要
怎么说呢...这次的代码码风有点... 从这篇博客开始,我终于会用LATEX了!撒花 注:以下涉及多项式的n均表示多项式的次数 FFT用途 很简单,多项式相乘. FFT原理 如果暴力乘,复杂度是$O( ...
- make distclean
清空bin目录make dirclean 清空所有相关的东西,包括下载的软件包,配置文件,feeds内容等make distclean 这个命令会删除feeds目录及其下面的所有的文件,直接结果就是运 ...
- 360加固保的dex脱壳方法
完全测试了看雪论坛的方法,发现并没有脱壳,依然无法反编译 http://bbs.pediy.com/thread-213377.htm 使用上面方法的结果是会得到16个dex文件,只有一个是与程序相关 ...
- T-SQL语句3
一.删除表 1.drop table语句 drop table database_name,schema_name,table_name 2.删除数据表 drop table dbo.t_delete ...
- poj 2236 加点 然后判断某两点是否连通
题目大意:给你N台电脑,从1-N.一个数字,表示两台计算机的最大通信距离,超过这个距离就无法进行通信.然后分别告诉这些电脑的坐标,接下来有两种操作,第一种O表示这点电脑修好,第二种S,表示测试这两台电 ...
- 【BZOJ】3640: JC的小苹果
题解 我们考虑列出期望方程组,\(dp[i][j]\)表示在第\(i\)个点血量为\(j\)的时候到达\(N\)点的概率,所有的\(dp[N][j]\)都是1,所有\(j < 0\)都是0 答案 ...
- Java 中的 protected 访问修饰符你真的了解吗?
protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...
- 解决Flume向Kafka多分区写数据
1 问题背景 Flume向kafka发布数据时,发现kafka接收到的数据总是在一个partition中,而我们希望发布来的数据在所有的partition平均分布 2 解决办法 Flume的官方文档 ...
- 040 DataFrame中的write与read编程
一:SparkSQL支持的外部数据源 1.支持情况 2.External LIbraries 不是内嵌的,看起来不支持. 但是现在已经有很多开源插件,可以进行支持. 3.参考材料 · 支持的格式:ht ...