MVC+EF 随笔小计——分部视图(Partial View)及Html.Partial和Html.Action差异

Partial View指可以应用于View中以作为其中一部分的View的片段(类似于之前的user control), 可以像类一样,编写一次, 然后在其他View中被反复使用。

一般放在"Views/Shared"文件夹中以共享。

创建Partial View:一般直接右键"Views/Shared"文件夹添加分部视图。

使用Partial View有两类helper :

Html.Partial / Html.RenderPartial

Html.Action / Html.RenderAction

创建分部视图

如下图,创建 _PartialPageWidget.cshtml

我们做一个简陋的widget.

参考下面的图,定义widget的HTML结构。

借用了bootstrap中panel的样式,结构如下。

通过Html.Partial / Html.RenderPartial 使用

直接应用Html.Partial或Html.RenderPartial辅助方法比较简单。

打开之前建好的Views/MVCDemo/Index.cshtml文件,添加如下内容:

显示结果:

通过Html.Action / Html.RenderAction 使用

通过Html.Action/Html.RenderAction使用稍微复杂一点,分成两步。

  1. 在要显示的View所对应的Controller中心增加一个Action.

    还用上面这个页面,我们在MVCDemoController.cs中增加一个Action

    做个简单的说明:

    1. [ChildActionOnly] 表示这个Action只应作为子操作进行调用。也就是说直接通过 controller/action这样的网址是不能访问的,会提示只能由子请求访问的错误。
    2. 必须返回一个PartialView
  2. 在View中添加相关代码

    显示结果和上一种方法一样

两种使用方式小结

当View中引用了一个或多个分部视图时,此View与各分部视图默认得到一样的数据,也就是说View及其中所有的Partial View默认情况下共享View中的ViewData和ViewBag.

需要使View和其中引入的Partial View有不同的数据,需要通过Html.Action/Html.RenderAction辅助方法, 并在对于被调用的Action中设置对应的数据。

另外还有几点需要注意:

  1. XXX和RenderXXX的区别在于,一个是直接返回字符串,另外一个是直接写入到相应输出流,因此不能直接放在代码表达式中,必须放在代码块中。

    前面的示例中两种写法是等价的。RenderXXX有轻微的性能优势,在大量的RenderXXX运行时,才能反映出性能上的优势。

  2. Partial/RenderPartial通常在单独的文件夹中应用视图标记来帮助View渲染视图模型的一部分。

    Action/RenderAction执行单独Controller中的Action来显示结果,提供了更多的灵活性,例如利用单独的Controller传递不同值。文章最后我们会举个例子说明。

  3. Partial/RenderPartial和Action/RenderAction的参数分别是 partialView和 Action的名字。当然还有其他的重载函数,我们只说最常用的。应用时可以按照我们前面举的例子。

Html.Partial和Html.Action差异举例

最后我们举个例子说明两种用法的差别。

  1. 新建一个Partial View

  2. Controller中新建两个Action,SharedDateDemo和PartialViewDate.

    根据SharedDateDemo生成主View, PartialViewDate供Html.Action调用

  3. 主View: SharedDateDemo.cshtml分别显示

    主View的时间;

    用Html.Partial调用Partial View的时间;

    用Html.Action调用Partial View的时间。

    显示结果:

    上面结果可以清晰的看到:

    1. View及其中所有的Partial View默认情况下共享View中的ViewData和ViewBag
    2. 可以通过Html.Action, 配合被调用的Action改变传递不同的数据。

Html.Partial使用方便,在不需要改变数据内容时非常方便。

Html.Action 使用更加灵活,可以根据业务要求按需定制Partial View显示内容。

时间: 2024-08-26 07:38:38

MVC+EF 随笔小计——分部视图(Partial View)及Html.Partial和Html.Action差异的相关文章

MVC+EF 随笔小计

HtmlHelper, 主要有这么几个: DisplayNameFor (model=>model.xxx)à 生成纯文本,显示xxx列名 DisplayFor (model=>model.xxx)à 生成纯文本,显示xxx列的内容 LableFor à 生成一个Lable标签 EditorFor à 生成一个text类型的input PasswordFor à 类似于EditorFor, 隐藏文本内容 ActionLink à 生成一个<a>标签 BeginForm à 生成一个

EF5+MVC4系列(11)在主视图中用Html.RenderPartial来调用分部视图(ViewDate传值);在主视图中用ajax调用action并在action中return PartialView返回分部视图(return view 和return PartialView 的区别)

一:主视图中调用子视图 在没有使用母版页的主视图中(也就是设置了layout为null的视图中),使用 Html.RenderPartial  可以调用分部视图(只调用视图,不调用action),并且使用 ViewData 来从主Action里面传值到主视图,或者是分布视图 最后生成的html如下   二:在主视图中用ajax调用子action并在子action中使用return PartialView返回分布视图(return view 和return PartialView 的区别) 这种情

System.Web.Mvc.Html 命名空间小计

1,Html.Action    使用指定参数调用指定子操作方法并以 HTML 字符串形式返回结果. 1 <div id="HtmlAction"> 2 3 @Html.Action("ActionName"); 4 5 @Html.Action("ActionName", "ControlName"); 6 7 @{ 8 object a = null; 9 10 } 11 @Html.Action("

随笔小计 --

1.    <meta http-equiv="mobile-agent" content="format=html5; url=http://m.cnmo.com/"> 页头meta声明, 当用户用手机访问这个PC端页面时,URL将自动跳转到指定的移动端URL地址. format设置移动端URL地址网页格式: 2. 待续……

MVC分部视图

近期的项目一直在使用MVC,常常用到分部视图,下面就简单介绍一下分部视图. 使用分部视图最大的一个感受就是,整个页面颗粒化了,每个大页面都由这些小的颗粒组成,而且这些颗粒可以共享.大家的任务量便随之减轻了不少. 分部视图的优点: 1.   分部视图可以使系统插件化 . 2.   分部视图还可以带来一个优点,就是分工合作. 3.   分部视图还有一个在Mvc时代的优点,就是实现简单. 分部视图和视图的区别 视图有head.body标签,可以定义js,可以指定母板页,但是在我们用Vs右键添加 分部视

MVC部分视图的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)

ASP.NET MVC 里页面往往会有许多重用的地方,可以进行封装重用. 使用部分视图有以下优点: 1. 可以简写代码. 2. 页面代码更加清晰.更好维护. 在视图里有多种方法可以 加载部分视图,包括: Partial() .RenderPartial() . Action() .RenderAction() . RenderPage() 方法 一.Partial与RenderPartial 1.Razor 语法: @Html.Partial() 与 @{Html.RenderPartial()

ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门

原文:ASP.NET Core 入门教程 7.ASP.NET Core MVC 分部视图入门 一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Razor)强类型分部视图教程 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE Visual Studio Code 1

MVC3分部视图

说到mvc3中的分部视图,不禁联想到webform里面的ascx分部控件,我们在MVC时代可以更加轻松的控制分部视图.MVC中主要分为两大类的分部视图,分别是Html.Partial(partialName).Html.RenderPartial(partialName)和Html.Action.Html.RenderAction(); (1)Html.Partial(partialName).Html.RenderPartial(partialName)  ●这两个方法我们可以指定任何的.cs

asp.net core mvc Partial View 应用

asp.net Core MVC支持部分视图特性,当我们在不同的项目中共享一些网页时,部分视图是非常有用的.1.部分视图定义:      部分视图是在一个视图中嵌套另外一个视图.在父视图中通过调用子视图并将子视图的HTML呈现给父视图.像一般视图一样,部分视图使用.cshtml文件扩展名.2.什么时候使用部分视图:      部分视图是将大的视图分解成较小视图组件的一种有效的方法.能使视图元素可以重复使用.通常布局元素在_Layout.cshtml中指定.非布局的并且可以重复的内容可以封装成部分