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

ae08b40d888878ca8ff2fc0ab6ddc86b.png

1ee591c04c5e2ebcfc1d2f550d5e7b1a.png

我们做一个简陋的widget.

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

8ab0f159bb973db1d686ae618b1820e1.png

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

12c856473e634fd84df62416d4e12103.png

通过Html.Partial / Html.RenderPartial 使用

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

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

e524997c2bf47e637fd6131f92f2d658.png

显示结果:

2f8a1d20c5574dc2870af0ef149f453a.png

通过Html.Action / Html.RenderAction 使用

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

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

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

4b8d1a0082cdb3f85b4ab6e6aa0025c6.png

做个简单的说明:

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

必须返回一个PartialView

在View中添加相关代码

9778caace2a051ec1b55df697f7cbaef.png

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

190128b022c209155c0e910b097ef95c.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

7de412b0f07b16c81b952d4a481c0eed.png

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

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

4ea9e90d7adcc7884ead3f02e0a54924.png

主View: SharedDateDemo.cshtml分别显示

主View的时间;

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

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

82d3a2a0dd7f550b43289a008a2e14ba.png

显示结果:

68a4a0b3842b2a6dc01b6d2e5e50109f.png

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

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

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

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

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

来源:https://www.cnblogs.com/Leon-Hu/p/5575311.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值