一个站点,经常有些地方会需要实现共用,而共用可以分为静态和动态。比如公用的底部是属于静态的,内容不会发生变化的。但像相关文章这样的功能,是需要根据当前文章去检索数据库返回相关数据的,每篇文章的相关文章都有可能是不同的。
在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)