1. 视图组件是什么?为什么需要它?
在ASP.NET Core开发中,我们经常遇到需要重复使用的UI片段。传统的Partial View虽然能解决部分问题,但当UI逻辑变得复杂时就会力不从心。视图组件(ViewComponent)正是为解决这个问题而生。
视图组件本质上是一个小型、自包含的MVC控制器,它有自己的逻辑和视图。与Partial View最大的区别在于:
- 可以包含业务逻辑
- 支持依赖注入
- 可以异步执行
- 有独立生命周期
我最近在一个电商项目中就深有体会:商品推荐模块需要在首页、分类页、详情页等多个地方展示,但每个位置的推荐逻辑又略有不同。如果用Partial View,要么写一堆if-else,要么复制多份代码,维护起来简直是噩梦。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 创建你的第一个视图组件
2.1 基础创建方式
创建一个视图组件有三种标准方式,我个人最推荐继承ViewComponent基类的方式:
csharp复制public class RecommendationViewComponent : ViewComponent
{
private readonly IProductService _productService;
// 支持依赖注入
public RecommendationViewComponent(IProductService productService)
{
_productService = productService;
}
public async Task<IViewComponentResult> InvokeAsync(string category)
{
var products = await _productService.GetRecommendationsAsync(category);
return View(products);
}
}
对应的视图文件应该放在:
code复制/Views/Shared/Components/Recommendation/Default.cshtml
2.2 视图组件的调用方式
在Razor页面
