创建一个视图组件
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})