首页后端开发ASP.NETASP.NET Core 5.0 MVC 视图组件的用法

ASP.NET Core 5.0 MVC 视图组件的用法

时间2023-12-04 01:17:03发布访客分类ASP.NET浏览978
导读:什么是视图组件视图组件与分部视图类似,但它们的功能更加强大。 视图组件不使用模型绑定,并且仅依赖调用时提供的数据。它也适用于 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
ASP.Net Core 5.0 MVC AppSettings配置文件读取,Startup 类中ConfigureServices 方法、Configure 方法的使用 开源项目《Elight.MVC-ASP.NET》的研究学习

游客 回复需填写必要信息