ASP.NET Core 中的分部视图和视图组件

视图组件目录名定义

目录名字可以叫ViewComponents或View_Components,但ViewComponent会和类名冲突,建议不要叫此名。

何时使用分部视图

分部视图是执行下列操作的有效方式:

  • 将大型标记文件分解为更小的组件。在由多个逻辑部分组成的大型复杂标记文件中,在分部视图中处理隔开的每个部分是有利的。 标记文件中的代码是可管理的,因为标记仅包含整体页面结构和对分部视图的引用。
  • 减少跨标记文件中常见标记内容的重复。当在标记文件中使用相同的标记元素时,分部视图会将重复的标记内容移到一个分部视图文件中。 在分部视图中更改标记后,它会更新使用该分部视图的标记文件呈现的输出。

不应使用分部视图来维护常见布局元素。 常见布局元素应在 _Layout.cshtml 文件中指定。

请勿使用需要复杂呈现逻辑或代码执行来呈现标记的分部视图。 使用视图组件而不是分部视图。

声明分部视图

分部视图是在 Views 文件夹 (MVC) 或 Pages 文件夹 (Razor Pages) 中维护的 .cshtml 标记文件。

在 ASP.NET Core MVC 中,控制器的 ViewResult 能够返回视图或分部视图。 在 Razor Pages 中,PageModel 可以返回表示为 PartialViewResult 对象的分部视图。 引用分部视图部分介绍了引用和呈现分部视图。

与 MVC 视图或页面呈现不同,分部视图不会运行 _ViewStart.cshtml 。 有关 _ViewStart.cshtml 的详细信息,请参阅 ASP.NET Core 中的布局

分部视图的文件名通常以下划线 (_) 开头。 虽然未强制要求遵从此命名约定,但它有助于直观地将分部视图与视图和页面区分开来。

视图组件

视图组件与分部视图类似,但它们的功能更加强大。 视图组件不使用模型绑定,并且仅依赖调用时提供的数据。 本文是使用控制器和视图编写的,但视图组件也适用于 Razor Pages。

视图组件:

  • 呈现一个区块而不是整个响应。
  • 包括控制器和视图间发现的相同关注点分离和可测试性优势。
  • 可以有参数和业务逻辑。
  • 通常从布局页调用。

视图组件可用于具有可重用呈现逻辑(对分部视图来说过于复杂)的任何位置,例如:

  • 动态导航菜单
  • 标记云(查询数据库的位置)
  • 登录面板
  • 购物车
  • 最近发布的文章
  • 典型博客上的边栏内容
  • 一个登录面板,呈现在每页上并显示注销或登录链接,具体取决于用户的登录状态

视图组件由两部分组成:类(通常派生自 ViewComponent)及其返回的结果(通常为视图)。 与控制器一样,视图组件也可以是 POCO,但大多数开发人员都希望利用派生自 ViewComponent 的可用方法和属性。

在考虑视图组件是否符合应用的规范时,请考虑改用 Razor 组件。 Razor 组件还将标记与 C# 代码组合来生成可重用的 UI 单元。 Razor 组件专用于让开发人员在提供客户端 UI 逻辑和组合时保持高效。 有关详细信息,请参阅 创建和使用 ASP.NET Core Razor 组件

 

 重要

如果需要执行代码,请使用视图组件,而不是使用分部视图。

https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/partial?view=aspnetcore-3.1

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-3.1

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!