zoukankan      html  css  js  c++  java
  • Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法

    Partial 和RenderPartial:
    这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样
    Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上

    @Html.Partial("ViewName")

    RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View

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

    这两个方法没有用到Controller, 是直接把一个View(Page) 给加进来
    而RenderAction 有点不一样, 这是一个Action, 所以会用到Controller 之后再回传一个页面

    public class ChildActionOnlyTestController : Controller

    {

      [ChildActionOnly]

      public ActionResult GetSupplierList()

      {

        var controller = new SupplierController();

        return controller.SupplierList();

      }

    }

    RenderPartial和RenderAction两者的相同点

    通常都被用来显示一个功能相对独立的“块”,比如说显示菜单或者导航条。 两者输出的结果都被作为调用的View的一部分显示。

    两者的不同点

    1. RenderPatial的数据来自于调用的View,而RenderAction来自自己。
    2. RenderAction会发起一个新的Request,而RenderPatial不会。
    @Html.Partial/@{Htmt.RenderPartial()}
    @Html.Partial用于将分部视图渲染为字符串
    @{Html.RenderPartial}将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)
     
    RenderPartial因为是直接写在响应流中,所以性能会更好(微量影响),而Partial不用写在代码块中,所以更方便
     
    @Html.Action()/@Html.RenderAction()
    和Partial与RenderPartial类似,但是因为会通过Action,所以更灵活,可以利用控制器上下文。
    在Action中可以通过IsChildAction来判断是被Url直接调用还是被Action()/RenderAction()调用
    可以利用重载直接参数给Action。
    RenderAction优先使用ActionNameAttribute。
    Action中使用return PartialView()指定分部视图,在_ViewStatrt.cshtml中指定的Layout会无效。
     
    4种PartialView对比:
    PartialView:
    <div>Just a PartialView Test!@ViewBag.Test</div>
    @ViewBag.Test

     

    View:
    <p>
        @{Html.RenderPartial("ViewUserControl1");}
        @Html.Partial("ViewUserControl1")
        @{Html.RenderAction("ViewUserControl1");}
        @Html.Action("ViewUserControl1")
    </p>

     

    Controller:
    复制代码
    Controller:
    [ChildActionOnly]//防止直接调用
    public ActionResult ViewUserControl1()
    {
        ViewBag.Test = "(Action)调用";
        return PartialView();
    }
    复制代码
            效果:
        

         

    http://www.cnblogs.com/gesenkof99/archive/2013/06/03/3115052.html

  • 相关阅读:
    django 项目需要注意的一些点
    VUE之路
    Oracle 表格碎片的查看方法
    RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法
    RMAN 修复主库 nologging 操作导致物理备库的坏块
    Oracle 数据库19c 回退降级到 11.2.0.4 方案
    如何评估oracle 数据库rman全备和增量备份大小
    在将Oracle GI和DB升级到19c或降级到以前的版本之前需要应用的补丁 (Doc ID 2668071.1)
    Oracle 数据库坏块处理
    opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/12041684.html
Copyright © 2011-2022 走看看