如何在ASP.NET Core中使用ViewComponent
前言
在之前的开发过程中,我们对于应用或者说使用一些小的组件,通常使用分布页(partial view),再往前在Web Form中我们会进行应用WEB Control
,好吧提及一个关键性代码TagPrefixTagName
,通过这种的标记我们便可以在我们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
我们有了一个基本的认识,狼蚁网站SEO优化的话创建一个ButtonViewComponent
示例,作为我们的参考
using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace ViewComponentDemo.ViewComponents { public class ButtonViewComponent : ViewComponent { public async Task<IViewComponentResult> InvokeAsync() { return View(); } } }
在视图页面中调用该组件
@await Component.InvokeAsync("Button")
对于ViewComponent
同样也是跟Controller
一样,进行通过我们服务端特性进行视图操作,再或者说渲染,比如狼蚁网站SEO优化我们要传递参数,进行修改我们的Button
的样式
我们修改一下原方法,增加一个Enum类型,进行样式的选择
@await Component.InvokeAsync("Button",ButtonType.Suess)
public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Suess) { ViewBag.Type = type; //return View("name",model);//允许强类型 return View(); } public enum ButtonType { Default, Primary, Suess, Info, Warning, Danger, Link }
ViewComponent特性
因为在我们的视图关系绑定中,我们更多的是依赖于命名式绑定,而当我们组件的命名与类命名不一致时,会导致我们搜索不到相关的视图,我们可能会在使用过程中对其应用不一样的Name
,而对于这种情况,我们可以使用ViewCompoentAttribute
进行标记,通过这种方式我们可进行视图的绑定,如下所示
[ViewComponent(Name ="Button")] public class ButtonTest : ViewComponent { public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Suess) { ViewBag.Type = type; return View(); } }
如上代码虽然ButtonTest
的命名引发了视图绑定失败(不能进行使用Button),而我们将其加入一个标记,将Name命名为Button
这样弥补了我们命名的不一致行为。
Taghelper方式
通过@addTagHelper
指定进行注册包含组件的程序集,组件位于ViewComponentDemo
程序集中
@addTagHelper , ViewComponentDemo
切记这种方式有一个弊端,参数不是可选性参数,也就是你必须把每一个参数都进行显示的调用一下,否则将导致搜索不到.
<vc:button type="@ButtonType.Suess"></vc:button>
在如上代码中type为我们的方法参数。
Reference
Demo:
以上就是如何在ASP.NET Core中使用ViewComponent的详细内容,更多关于ASP.NET Core中使用ViewComponent的资料请关注狼蚁SEO其它相关文章!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程