【转】Html.RenderPartial与 Html.RenderAction的区别

简介: Html.RenderPartial与Html.RenderAction 这个两个方法都是用于把MVC用户控件嵌入到View中。 Html.RenderPartial是直接将MVC用户控件嵌入到界面上 @{Html.RenderPartial("SupplierList ");} 注意: MVC用户控件必须放在调用者同一目录下,也可以放在View/Shared中。

Html.RenderPartial与Html.RenderAction 这个两个方法都是用于把MVC用户控件嵌入到View中。

Html.RenderPartial是直接将MVC用户控件嵌入到界面上

@{Html.RenderPartial("SupplierList ");} 

注意: MVC用户控件必须放在调用者同一目录下,也可以放在View/Shared中。

@Html.RenderPartial("~/Views/ Supplier/SupplierList.ascx"); 

指明MVC用户控件所放的具体目录。Html.RenderAction是通过Controller中的Action来调用MVC用户控件

在MVC 2.0中,新增加了Html.RenderAction();这个方法RenderPartial有点不一样,他是直接重新执行一次Controller → Model → View的顺序,然后把产生的页面带回到原来的View中再回传。

所以Html.RenderAction中传递的参数是执行的Controller和Action名称。若是在控制器中的某个方法只能让Html.RenderAction()调用时,可以在方法上添加特性[ChildActionOnly],其它的地方无法访问。

public class ChildActionOnlyTestController : Controller
{
 [ChildActionOnly]
 public ActionResult GetSupplierList()
 {
  var controller = new SupplierController();
  return controller.SupplierList();
 }
}

以下是执行过程比较图

一个示例:
Controller:

//文章菜单列表
[ChildActionOnly]
public ActionResult ArticleMenu()
{
 var item = _db.Classes.ToList();
  return PartialView(item);
}

View:Articlemenu.cshtml

@model IEnumerable<Class>
@foreach (var item in Model)
{
 @Html.ActionLink(item.ClassName,item.ActionName, "Article", null, new { @class = "tree_children", @target = "MainFrame" })
}

Add View:Index.cshtml

@{Html.RenderAction("ArticleMenu", "Article");}

 第二个示例:
Controller: 注意PartialView里加载的是部分视图并不是model

[ChildActionOnly]
public ActionResult CartSummary()
{
var cart = ShoppingCart.GetCart(this.HttpContext);
ViewData["CartCount"] = cart.GetCount();
 return PartialView("CartSummary");
}

PartiaView:CartSummary.cshtml

@Html.ActionLink("Cart (" + ViewData["CartCount"] + ")",
    "Index",
    "ShoppingCart",
    new { id = "cart-status" })

Add View:

@{Html.RenderAction("GenreMenu", "Store");}

 

学习交流群:364976091
相关文章
|
6月前
|
前端开发
CSS和HTML的区别
CSS和HTML的区别。
35 2
|
6月前
|
Python
DTL与普通的HTML文件的区别
DTL与普通的HTML文件的区别。
91 5
|
6月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
86 0
|
2月前
|
前端开发
HTML 颜色的不用写法和最终显示效果的区别
HTML 中色彩的指定有多种方式,包括十六进制(如 `#FF5733`)、RGB(如 `rgb(255, 87, 51)`)、RGBA(如 `rgba(255, 87, 51, 0.5)`)、HSL(如 `hsl(14, 100%, 60%)`)、HSLA(如 `hsla(14, 100%, 60%, 0.5)`)以及直接使用颜色名称(如 `orange`)。这些方法虽然最终显示效果可能相同,但在使用场景和灵活性上各具优势。十六进制和 RGB 更常用,HSL 则便于调整颜色属性,而 RGBA 和 HSLA 增加了透明度选项,颜色名称则提高了代码的可读性。
WK
|
2月前
|
存储 移动开发 前端开发
HTML5和CSS5有什么区别
HTML5和CSS5在网页设计中扮演不同角色。HTML5是超文本标记语言的第五版,通过新特性如实时更新、跨平台运行及更好的安全性等,定义网页内容和结构。尽管常说CSS5,实际最新的CSS版本包含多个模块如CSS Grid和Flexbox,主要用于控制网页布局和样式,提供强大的选择器、动画支持和响应式设计,与HTML5相辅相成,共同构建现代网页的基础架构。
WK
47 3
|
2月前
|
前端开发 JavaScript
html中id和class的相同和不同之处及用法的规范与区别
在HTML中,`id`和`class`都用于标识和选择元素,但存在一些关键差异。
|
3月前
|
移动开发 前端开发 API
React路由和HTML5 History API有什么区别
【8月更文挑战第11天】React路由和HTML5 History API有什么区别
45 1
|
3月前
|
移动开发 前端开发 JavaScript
|
3月前
|
移动开发 编解码 UED
HTML5 中字体大小单位 em 和 rem 的区别
【8月更文挑战第24天】
189 0
|
3月前
|
XML 数据格式 开发者