[Asp.Net Core]视图组件扩展定制

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]视图组件扩展定制相关的知识,希望对你有一定的参考价值。

视图组件

1.呈现页面响应的某一部分而不是整个响应
2.包括在控制器和视图之间发现的关注分离和可测试性优势
3.可以具有参数和业务逻辑
4.通常在页面布局中调用

如何自定义视图组件?

二、使用步骤

1.Razor组件对应的类需要以ViewComponent结尾
2.继承ViewComponent类
3.定义一个异步版本的InvokeAsync 可以自定义参数
4.InvokeAsync就是返回组件内容的方法

代码如下(示例):

    public class ListViewComponent : ViewComponent
    
        public async Task<IViewComponentResult> InvokeAsync(string searchString)
        
            ViewBag.User = "Richard";
            var list = await GetStudentList(searchString);
            return View(list);
        

        public Task<List<Student>> GetStudentList(string searchString)
        
            return Task.Run(() =>
            
                return new List<Student>()
                
                    new Student() Id=123,Name="张三",
                      new Student() Id=234,Name="李四",
                        new Student() Id=345,Name="王五",
                          new Student() Id=456,Name="赵六"
                ;
            );
        
    

5.在Views文件夹下的Shard文件夹下建立Components 文件夹,再Conponents下创建一个和组件类名称相同的文件夹
默认组件特性命名。

6.创建视图

代码如下(示例):


@
    ViewData["Title"] = "ViewComponentTest";


<h1>this is  ViewComponentTest</h1>

@await Component.InvokeAsync("CustomList", new  searchString = "123456" )


<br />
@await Component.InvokeAsync("CustomList", new  searchString = "123456" )
<br />
@await Component.InvokeAsync("CustomList", new  searchString = "123456" )
<br />
@await Component.InvokeAsync("CustomList", new  searchString = "123456" )
<br />
@await Component.InvokeAsync("CustomList", new  searchString = "123456" )

7.@await Component.InvokeAsync(“List”, new maxPriority = 123, isDone = false )调用组件

返回视图可以制定路径:

  return View("~/Views/Test/DefaultTest.cshtml", list);

以上是关于[Asp.Net Core]视图组件扩展定制的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core]Resource扩展定制支持缓存

[Asp.Net Core]FilterFactory扩展定制

在 ASP.NET Core 站点中实现 Blazor - 组件不在视图中呈现

ASP.NET Core管道深度剖析[共4篇]

ASP.NET Core 依赖注入错误:尝试激活时无法解析服务类型 - 调用视图组件时出现错误 [重复]

如何在 ASP.Net Core 中使用 条件中间件