千家信息网

ASP.NET5和MVC6中View Component的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"ASP.NET5和MVC6中View Component的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ASP.NET5
千家信息网最后更新 2026年11月04日ASP.NET5和MVC6中View Component的示例分析

这篇文章主要为大家展示了"ASP.NET5和MVC6中View Component的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ASP.NET5和MVC6中View Component的示例分析"这篇文章吧。

在之前的MVC中,我们经常需要类似一种小部件的功能,通常我们都是使用Partial View来实现,因为MVC中没有类似Web Forms中的WebControl的功能。但在MVC6中,这一功能得到了极大的改善。新版MVC6中,提供了一种叫做View Component的功能。

你可以将View Component看做是一个mini的Controller--它只负责渲染一小部分内容,而非全部响应,所有Partial View能解决的问题,你都可以使用View Component来解决,比如:动态导航菜单、Tag标签、登录窗口、购物车、最近阅读文章等等。

View Component包含2个部分,一部分是类(继承于ViewComponent),另外一个是Razor视图(和普通的View视图一样)。就像新版MVC中的Controller一样,ViewComponent也可以使POCO的(即不继承ViewComponent类,但类名以ViewComponent结尾)。

View Component的创建

目前,View Component类的创建方式有如下三种:

直接继承于ViewComponent给类加上ViewComponent特性,或继承于带有ViewComponent特性的类创建一个类,类名以ViewComponent结尾

和Controller一样,View Component必须是public的,不能嵌套,不能是抽象类。

举例来说,我们创建一个View Component,类名为TopListViewComponent,代码如下:

public class TopListViewComponent : ViewComponent{ private readonly ApplicationDbContext db; public TopListViewComponent(ApplicationDbContext context) { db = context; } public IViewComponentResult Invoke(int categoryId, int topN) { List col = new List(); var items = db.TodoItems.Where(x => x.IsDone == false &&      x.categoryId == categoryId).Take(topN); return View(items); }}

上述类,也可以定义成如下这样:

[ViewComponent(Name = "TopList")]public class TopWidget{ // 其它类似}

通过在TopWidget类上定义一个名称为TopList的ViewComponent特性,其效果和定义TopListViewComponent类一样,系统在查找的时候,都会认可,并且在其构造函数中通过依赖注入功能提示构造函数中参数的类型实例。

Invoke方法是一个约定方法,可以传入任意数量的参数,系统也支持InvokeAsync方法实现异步功能。

View Component的视图文件创建

以在ProductController的视图里调用View Component为例,我们需要在Views\Product文件夹下创建一个名称为Components的文件夹(该文件夹名称必须为Components)。

然后在Views\Product\Components文件夹下创建一个名称为TopList 的文件夹(该文件夹名称必须和View Component名称一致,即必须是TopList)。

在Views\Product\Components\TopList文件夹下,创建一个Default.cshtml视图文件,并添加如下标记:

@model IEnumerable

Top Products

    @foreach (var todo in Model) {
  • @todo.Title
  • }

如果再View Component中,没有指定视图的名称,将默认为Default.cshtml视图。

至此,该View Component就创建好了,你可以在Views\Product\index.cshtml视图中的任意位置调用该View Component,比如:

 
@Component.Invoke("TopList", 1, 10)

如果在上述TopListViewComponent中定义的是异步方法InvokeAsync的话,则可以使用@await Component.InvokeAsync()方法来调用,这两个方法的第一个参数都是TopListViewComponent的名称,剩余的参数则是在TopListViewComponent类中定义的方法参数。

注意:一般来说,View Component的视图文件都是添加在Views\Shared文件夹的,因为一般来说ViewComponent不会特定于某个Controller。

使用自定义视图文件

一般来说,如果要使用自定义文件,我们需要在Invoke的方法返回返回值的时候来指定视图的名称,示例如下:

return View("TopN", items);

那么,就需要创建一个Views\Product\Components\TopN.cshtml文件,而使用的时候则无需更改,还是指定原来的View Component名称即可,比如:

@await Component.InvokeAsync("TopList", 1, 10) //以异步调用为例

以上是"ASP.NET5和MVC6中View Component的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 视图 名称 文件夹 方法 功能 参数 示例 内容 分析 一般来说 时候 特性 篇文章 函数 类名 系统 学习 帮助 普通 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 百单网互联网科技有限公司怎么样 河南云网互联网络科技有限公司 重庆互联网络科技 青岛互联网科技公司 猫创互联网科技 互联网 科技服务平台 互联网金融中的现代科技 江阴互联网智能科技产品进口 本届互联网博览会上的黑科技 恒生互联网科技业指数调整周期 风投北京互联网科技 江苏互联网科技小贷 广州燕处互联网科技有限公司 版纳互联网科技选哪家 银川新华互联网科技学校原画 互联网领先科技成果宣传视频 青岛互联网科技园 知域互联网科技有限公司官网 武汉亿视互联网科技有限公司 互联网科技的发展 科技与互联网发展 互联网科技公司怎么样 广州善班互联网科技 新华互联网科技校企合作 互联网科技与管理 本届互联网博览会上的黑科技 乌鲁木齐新华智原互联网科技学校 恒生互联网科技业指数调整周期 兰石爱特工业互联网科技分公司
0