视图组件封装了可重用的逻辑和视图。它们的定义是:
一个ViewComponent类,其中包含用于为视图获取和准备数据以及确定要呈现的视图的逻辑。
一个或多个视图
由于它们包含逻辑,因此与部分视图相比,它们更灵活,同时仍然可以促进关注点的良好分离。
一个简单的自定义视图组件定义为:
public class MyCustomViewComponent : ViewComponent { public async Task<IViewComponentResult> InvokeAsync(string param1, int param2) { //一些业务逻辑 //渲染〜/ Views / Shared / Components / MyCustom / Default.cshtml return View(new MyCustomModel{ ... }); } } @*View file located in ~/Views/Shared/Components/MyCustom/Default.cshtml*@ @model WebApplication1.Models.MyCustomModel <p>Hello @Model.UserName!</p>
可以从任何视图调用它们(甚至可以通过返回来调用控制器ViewComponentResult)
@await Component.InvokeAsync("MyCustom", new {param1 = "foo", param2 = 42})