asp.net-core 创建一个视图组件

示例

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

  • 一个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})