创建一个视图组件

View 组件封装了可重用的逻辑和视图。它们的定义是:

  • 一个 ViewComponent 类,包含用于获取和准备视图数据以及决定要呈现哪个视图的逻辑。
  • 一个或多个视图

由于它们包含逻辑,因此它们比部分视图更灵活,同时仍然可以促进关注点的良好分离。

一个简单的自定义视图组件定义为:

public class MyCustomViewComponent : ViewComponent
{        
    public async Task<IViewComponentResult> InvokeAsync(string param1, int param2)
    {
        //some business logic

        //renders ~/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})