ASP.NET Core 5.0 MVC 视图组件的用法
导读:什么是视图组件视图组件与分部视图类似,但它们的功能更加强大。 视图组件不使用模型绑定,并且仅依赖调用时提供的数据。它也适用于 Razor 页。视图组件:呈现一个区块而不是整个响应。包括控制器和视图间发现的相同关注点分离和可测试性优势。可以有...
什么是视图组件
视图组件与分部视图类似,但它们的功能更加强大。 视图组件不使用模型绑定,并且仅依赖调用时提供的数据。它也适用于 Razor 页。
视图组件:
- 呈现一个区块而不是整个响应。
- 包括控制器和视图间发现的相同关注点分离和可测试性优势。
- 可以有参数和业务逻辑。
- 通常从布局页调用。
视图组件可用于具有可重用呈现逻辑(对分部视图来说过于复杂)的任何位置,例如:
- 动态导航菜单
- 标记云(查询数据库的位置)
- 登录面板
- 购物车
- 最近发布的文章
- 典型博客上的边栏内容
- 一个登录面板,呈现在每页上并显示注销或登录链接,具体取决于用户的登录状态
视图组件由两部分组成:类(通常派生自 ViewComponent)及其返回的结果(通常为视图)。
创建ViewCompont组件类
创建一个 ViewComponents 文件夹并添加以下 PriorityListViewComponent 类
public class PriorityListViewComponent : ViewComponent
{
public async TaskIViewComponentResult>
InvokeAsync(int maxPriority, bool isDone)
{
var items = await GetItemsAsync(maxPriority, isDone);
return View(items);
}
private TaskListTodoItem>
>
GetItemsAsync(int maxPriority, bool isDone)
{
return Task.RunListTodoItem>
>
(() =>
{
return new ListTodoItem>
()
{
new TodoItem(){
Id=123,
Name="孙思邈",
Age=6,
Description="药王、妙应真人、孙十常、白山药王 "
}
,
new TodoItem(){
Id=456,
Name="孙思邈",
Age=7,
Description="药王、妙应真人、孙十常、白山药王 "
}
,
new TodoItem(){
Id=789,
Name="孙思邈",
Age=8,
Description="药王、妙应真人、孙十常、白山药王 "
}
,
new TodoItem(){
Id=12,
Name="孙思邈",
Age=9,
Description="药王、妙应真人、孙十常、白山药王"
}
}
;
}
);
}
}
public class TodoItem
{
public int Id {
get;
set;
}
public string Name {
get;
set;
}
public int Age {
get;
set;
}
public string Description {
get;
set;
}
}
创建视图组件 Razor 视图
- 创建 Views/Shared/Components 文件夹。 此文件夹 必须 命名为 Components。
- 创建 Views/Shared/Components/PriorityList 文件夹。 此文件夹名称必须与视图组件类的名称或类名去掉后缀(如果遵照约定并在类名中使用了“ViewComponent”后缀)的名称相匹配。 如果使用了
ViewComponent属性,则类名称需要匹配指定的属性。 - 创建 Views/Shared/Components/PriorityList/Default ... Razor view:
@model IEnumerableTodoItem>
h3>
Priority Items/h3>
ul>
@foreach (var todo in Model)
{
li>
@todo.Name/li>
}
/ul>


使用组件视图
在详情Index视图上,引用组件视图
div>
@await Component.InvokeAsync("PriorityList", new {
maxPriority = 2, isDone = false }
)
/div>

效果图
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ASP.NET Core 5.0 MVC 视图组件的用法
本文地址: https://pptw.com/jishu/566960.html
