在之前的开拓进程中,我们对付应用可能说利用一些小的组件,凡是利用漫衍页(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示例,作为我们的参考:
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一样,举办通过我们处事端特性举办视图操纵,再可能说渲染,好比下面我们要通报参数,举办修改我们的Button的样式:
我们修改一下原要领,同时增加一个Enum范例,举办样式的选择
@await Component.InvokeAsync("Button",ButtonType.Success)
public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success) { ViewBag.Type = type; //return View("name",model);//答允强范例 return View(); } public enum ButtonType { Default, Primary, Success, Info, Warning, Danger, Link }
ViewComponent特性因为在我们的视图干系绑定中,我们更多的是依赖于定名式绑定,而当我们组件的定名与类定名纷歧致时,会导致我们搜索不到相关的视图,虽然我们大概会在利用进程中对其应用纷歧样的Name,而对付这种环境,我们可以利用ViewCompoentAttribute
举办标志,通过这种方法我们可举办视图的绑定,如下所示:
[ViewComponent(Name ="Button")] public class ButtonTest : ViewComponent { public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success) { ViewBag.Type = type; return View(); } }
如上代码固然ButtonTest的定名激发了视图绑定失败(不能举办利用Button),而我们将其插手一个标志,将Name定名为Button这样补充了我们定名的纷歧致行为。
Taghelper方法通过@addTagHelper指定举办注册包括组件的措施集,组件位于ViewComponentDemo措施会合
@addTagHelper *, ViewComponentDemo
切记这种方法有一个漏洞,参数不是可选性参数,也就是你必需把每一个参数都举办显示的挪用一下,不然将导致搜索不到.
<vc:button type="@ButtonType.Success"></vc:button>
在如上代码中type为我们的要领参数。
ReferenceDemo:https://github.com/hueifeng/BlogSample/tree/master/src/ViewComponentDemo
以上就是如安在ASP.NET Core中利用ViewComponent的具体内容,更多关于ASP.NET Core中利用ViewComponent的资料请存眷剧本之家其它相关文章!
您大概感乐趣的文章: