一个站点,经常有些地方会需要实现共用,而共用可以分为静态和动态。比如公用的底部是属于静态的,内容不会发生变化的。但像相关文章这样的功能,是需要根据当前文章去检索数据库返回相关数据的,每篇文章的相关文章都有可能是不同的。
在ASP.NET CORE中,我们可以使用分部视图自定义视图组件ViewComponent来实现,其使用也很简单。
分成下面3个步骤:
1) 先在根目录建一个文件夹ViewComponents ,里面实现类需要继承自ViewComponent,这里放的就是组件的控制层。比如我这样写:
public class HotTagsViewComponent : ViewComponent { private readonly IArticleService _articleService; public HotTagsViewComponent(IArticleService articleService) { this._articleService = articleService; } public IViewComponentResult Invoke(int id) { var article = _articleService.Get(id); return View(article); } }
2)接下来要写组件的视图层了,在网站根目录的Views下,建立default.cshtml ,最终目录如下:/Views/Shared/Components/HotTags/default.cshtml
3) 在其它需要使用该组件的地方,用下面语句:
@await Component.InvokeAsync("HotTags",100)