html.action 访问分部视图,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

ff95efcfe709650350eeb087e9fe9514.png

4cbf1a68d012eed1d3a1b9d526194f48.png

我们做一个简陋的widget.

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

7857c72c480b3d57c26c06ffa0e48b5a.png

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

93d85ea021d143d5cd98f98355a5a4a1.png

通过Html.Partial / Html.RenderPartial 使用

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

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

1d5e8b8d5dfb45bf4625d7318e98ae72.png

显示结果:

37f2e67acc46a0dbb216ab1385c58a1e.png

通过Html.Action / Html.RenderAction 使用

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

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

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

14e258b0e136cbdd8a3ef4d2615132d8.png

做个简单的说明:

[ChildActionOnly] 表示这个Action只应作为子操作进行调用。也就是说直接通过 controller/action这样的网址是不能访问的,会提示只能由子请求访问的错误。

必须返回一个PartialView

在View中添加相关代码

9e8b6278122d5fa5ce20931ea3ee40fa.png

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

b81d438757de9a50d741840f249a27ba.png

两种使用方式小结

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

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

另外还有几点需要注意:

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

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

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

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

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

Html.Partial和Html.Action差异举例

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

新建一个Partial View

009972976dbd14f9142145b5a4c228e7.png

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

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

1c8693cad91cddb8794f7a689798428c.png

主View: SharedDateDemo.cshtml分别显示

主View的时间;

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

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

6e9cd285b55d463dc3d655fb5ce8e762.png

显示结果:

30ebc81124163e2f83bb0f9e922dcbf3.png

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

View及其中所有的Partial View默认情况下共享View中的ViewData和ViewBag

可以通过Html.Action, 配合被调用的Action改变传递不同的数据。

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

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

MVC+EF 随笔小计————Html Helpers

理论基础 -- Html Helpers 主要分成输入类和显示类. 输入类: TextArea, TextBox Password Hidden DropDownList ListBox (与Drop ...

MVC+EF 随笔小计——NuGet程序包管理

安装EF 打开 工具-库程序包管理器-程序包管理器控制台 输入 install-package entityframework 去MSDN上查看下EF的架构图:http://msdn.microsof ...

System.Web.Mvc.Html 命名空间小计(转)

最近在看MVC框架,发现这个博文对初学者可能有帮助,故转之. 1,Html.Action    使用指定参数调用指定子操作方法并以 HTML 字符串形式返回结果. Html.Action() < ...

Kotlin 随笔小计

最近准备学Kotlin 现在Kotlin也能支持IOS开发了,准备后面买个Mac也能进行IOS开发 当然目标还是看着能不能把一些小的Android项目重构下 也算是定个目标吧,由于沉迷吃鸡,日志都没怎 ...

unicode随笔小计

科普字符集: ascii:一个字节,占8位,(0000 0000 - 1111 1111) 如果只是英语那就没什么问题. 后来,不同的语言有了编码诞生.为了统一,出现一个大集合.便有了. unicod ...

scss的初级学习随笔小计

$white: #fff;$three: #333;$six: #666;$nine: #999;$red: #fff;$orange: #f63;$yellow: #fc0;$opcity: rgb ...

System&period;Web&period;Mvc&period;Html 命名空间小计

1,Html.Action    使用指定参数调用指定子操作方法并以 HTML 字符串形式返回结果. 1

2 3 @Html ...

&period;NET MVC&plus; EF&plus;调用存储过程 多表联查以及VIEW列表显示

直接上干活,至于网上的一大堆处理方式不予评论,做好自己的就是最好的,供大家不走弯路 1.view页面

Android - ScrollView 使用小计 里面嵌套的View 如何设置全屏

设置ScrollView的属性android:fillViewport="true" 即可 <?xml version="1.0" encoding=&q ...

随机推荐

CSS之圣杯布局与双飞翼布局

圣杯布局 三行等高 HTML:

    

2、HTML

软件的结构: C/S(Client Server)结构的软件: 比如: QQ. 极品飞车. 飞信 . 迅雷 cs结构的软件的缺点:更新的时候需要用户下载更新包然后再安装,程序员则需要开发客户端与服务端 ...

combox绑定后添加自定义列

DataTable dt = shUBll.FindAllByWhere(""); DataRow dr = dt.NewRow(); dr["SUID"] = ...

C中的setjmp与longjmp

setjmp与longjmp是属于C语言中的,当然,C++也会有这两个函数了.他们的原型如下: int setjmp( jmp_buf env ); 作用:第一次调佣时,将寄存器的当前状态信息全部存入 ...

static关键字的用法和main函数

一.static关键字:静态的,它可以修饰成员变量和成员方法 1.修饰成员变量的情况,当类所属对象中存在共享数据时,我们就可以把数据对应的属性定义为静态的,这里的共享数据是对象数据相同,而不是拥有相同 ...

Installation error INSTALL&lowbar;FAILED&lowbar;VERSION&lowbar;DOWNGRADE错误

最近折腾了一下Robotium自动化测试框架,发现问题还挺多,刚刚解决了一个问题,总算是把环境搞定了,可是一运行测试用例,发现又报Installation error INSTALL_FAILED_V ...

2017-9-13-Linux移植:bootloader烧写

首先看一下Linux启动过程: Linux启动过程 刚开始最重要的是Bootloader的启动,Bootloader因你改改存放到哪?怎么执行?作用是啥? bootloader的烧写: 所谓烧写也就是 ...

spring配置log4j

1.引入log4j-xxx.jar包,buildpath. 2.在项目的根目录下新建resources名的文件夹,注意是source folder,并新建log4j.properties文件 3.在l ...

17秋 软件工程 Alpha 事后诸葛亮会议

题目: 团队作业--Alpha冲刺 17秋 软件工程 Alpha 事后诸葛亮会议 关于评价与建议的反馈 评价1:管理部门我觉得对我已经用处不大了不过对新生用处很大.像学长说的一样,里面不是流程很懂但是 ...

java资料——线程(转)

线程       线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.另外,线程 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值