如何在ASP.NET Core中使用ViewComponent
前言
在之前的开发过程中,我们对于应用或者说使用一些小的组件,通常使用分布页(partial view),再往前在web form中我们会进行应用web control
,好吧提及一个关键性代码tagprefix:tagname
,通过这种的标记我们便可以在我们web form
中进行引入我们的组件,当然自从.net mvc之后呢,就已经没有了webcontrol
,而对于.net core后,又多了一个特性viewcomponent
。
对于viewcomponent
看起来它类似于小的控制器,而对于我们小的组件或者小部分通用型功能,可通过viewcomponent
进行实现,比如说留言栏、菜单等等。
viewcomponent
是由两部分组成,一部分是类(通常该类集成与viewcomponent),而另外一部分是视图(razor和普通的view一样),当然viewcomponent
同样也支持poco,不继承viewcomponent
,但类名以viewcomponent
结尾。
自定义一个组件
创建viewcomponent的方式有三种,如下所示:
- 继承自viewcomponent
- 使用viewcomponent特性
- 创建一个类,以viewcomponent结尾
需要注意的是view component必须是公共的(public),非嵌套,非抽象类。
对于view component
我们有了一个基本的认识,下面的话创建一个buttonviewcomponent
示例,作为我们的参考:
在视图页面中调用该组件:
对于viewcomponent
同样也是跟controller
一样,进行通过我们服务端特性进行视图操作,再或者说渲染,比如下面我们要传递参数,进行修改我们的button
的样式:
我们修改一下原方法,同时增加一个enum类型,进行样式的选择
viewcomponent特性
因为在我们的视图关系绑定中,我们更多的是依赖于命名式绑定,而当我们组件的命名与类命名不一致时,会导致我们搜索不到相关的视图,当然我们可能会在使用过程中对其应用不一样的name
,而对于这种情况,我们可以使用viewcompoentattribute
进行标记,通过这种方式我们可进行视图的绑定,如下所示:
如上代码虽然buttontest
的命名引发了视图绑定失败(不能进行使用button),而我们将其加入一个标记,将name命名为button
这样弥补了我们命名的不一致行为。
taghelper方式
通过@addtaghelper
指定进行注册包含组件的程序集,组件位于viewcomponentdemo
程序集中
切记这种方式有一个弊端,参数不是可选性参数,也就是你必须把每一个参数都进行显示的调用一下,否则将导致搜索不到.
在如上代码中type为我们的方法参数。
reference
demo:https://github.com/hueifeng/blogsample/tree/master/src/viewcomponentdemo
以上就是如何在asp.net core中使用viewcomponent的详细内容,更多关于asp.net core中使用viewcomponent的资料请关注其它相关文章!
推荐阅读
-
Asp.net Core中如何使用中间件来管理websocket
-
在ASP.NET Core 3.0中使用Swagger
-
浅谈如何在ASP.NET Core中实现一个基础的身份认证
-
谈谈如何在ASP.NET Core中实现CORS跨域
-
详解如何在ASP.NET Core中应用Entity Framework
-
详解如何在ASP.NET Core中使用Redis
-
在Asp.Net或.Net Core中配置使用MarkDown富文本编辑器有开源模板代码(代码是.net core3.0版本)
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
在Asp.Net Core中配置使用MarkDown富文本编辑器实现图片上传和截图上传(开源代码.net core3.0)
-
Asp.net Core中如何使用中间件来管理websocket