• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ASP.NET Core MVC学习之视图组件(View Component)

c# 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

1.视图组件介绍

视图组件是 ASP.NET Core MVC 的新特性,类似于局部视图,但它更强大。视图组件不使用模型绑定,并且仅依赖于调用它时所提供的数据。

视图组件特点:

  呈块状,而不是整个响应

  包括在控制器和视图之间发现的相同的关注点和可测试性优点

  可以拥有参数和业务逻辑

  通常从布局页面调用

视图组件可以用在任何需要重复逻辑且对局部视图来说过于复杂的情况,例如:

  动态导航菜单

  标签云(需要查询数据库)

  登录面板

  购物车

  最近发表的文章

  典型博客上的侧边栏内容

  将在每个页面上呈现的登录面板,根据用户的登录状态显示注销或者登录的链接

视图组件有两部分组成,类(通常派生自 ViewComponent)和它返回的结果(通常是一个视图)。与控制器一样,视图组件可以是POCO,但大多数是利用 ViewComponent 派生的方法和属性。 

2.创建视图组件

(1)视图组件类

一个视图组件类通常可以通过以下任一方式创建:

  派生自ViewComponent

  使用 [ViewComponent] 属性装饰类,或从具有 [ViewComponent] 属性的类派生

  创建一个名称后缀为 ViewComponent 结尾的类

像控制器一样,视图组件必须是 public ,非嵌套和非抽象类。视图组件名称是删除了 ViewComponent 后缀的类名,可以使用 ViewComponentAttribute.Name 属性显示指定。

视图组件类优点:

  完全支持构造函数依赖注入

  不参与控制器生命周期,这意味着不能在视图组件中使用过滤器

(2) 视图组件方法

视图组件在 InvokeAsync 方法中定义其逻辑,并返回 IViewComponentResult 。参数直接来自视图组件的调用,而不是来自模型绑定。视图组件从不直接处理请求。通常,视图组件通过调用 View 方法初始化模型并将其传递给视图。总之,视图组件有以下特点:

  定义一个 InvokeAsync 方法并返回 IViewComponentResult。

  通常通过调用  ViewComponent View 方法初始化模型并将其传递给视图。

  参数来自调用方法,而不是 HTTP,没有模型绑定。

  不能直接作为 HTTP 端点访问,它是从你的代码(通常在视图中)调用的。视图组件不处理请求。

  在签名上重载,而不是当前 HTTP 请求的任何细节。

(3) 视图搜索路径

运行时在以下路径搜索视图:

Views/<controller_name>/Components/<view_component_name>/<view_name>

Views/Shared/Comp本文来源gaodai$ma#com搞$代*码网2onents/<view_component_name>/<view_name>

视图组件的默认视图名称是 Default,这意味着你的视图文件通常名为 Default.cshtml。你可以在创建视图组件结果或调用 View 方法时指定其他的视图名称。

3.调用视图组件

    要使用视图组件,请从视图中调用  @Component.InvokeAsync(“视图组件名称”,<匿名参数>)。参数将传递到 InvokeAsync 方法。如下:

@await Component.InvokeAsync("TopicRankList",new { days=5})

视图组件通常从视图中调用,但也可以从控制器方法中直接调用,虽然视图组件不像控制器那样定义终结点。

        public ActionResult Index()
        {
            return ViewComponent(“TopicRankList”, new { days = 5 });
        }
 


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ASP.NET Core MVC学习之视图组件(View Component)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址