zoukankan      html  css  js  c++  java
  • .net core 学习笔记(4)-ViewComponent

    动态菜单,以前用的是Html.Action(url)来获取的,到了 .net core 中忽然发现没有了这个方法,原来在 .net core 中是提供了个 ViewComponent,有点类似以前的用户控件。

    1.创建一个ViewComponent,首先要注意的就是后缀名字得是【ViewComponent】,这个和创建控制器一样的。然后就是必须要实现Invoke/InvokeInvokeAsync 方法,后者看后缀就知道是异步的。我这里用的是异步的方法

    public class MenuViewComponent : ViewComponent
        {
            IMenuService _menuService;
    
            public MenuViewComponent(IMenuService menuservice)
            {
                _menuService = menuservice;
            }
            /// <summary>
            /// 获取菜单视图,页面输出缓存,时间是30天
            /// </summary>
            /// <returns></returns>
            [ResponseCache( Duration = 259200)]
            public async Task<IViewComponentResult> InvokeAsync(string status)
            {
                              
                var list = await GetMenuAsync();
             
           return View(list); // return View("_LeftMenu",list); //调用share文件夹下的Component
    } private Task<List<MenuDto>> GetMenuAsync() { return Task.FromResult(_menuService.MenuGetList().Where(c => c.IsLock == 0).ToList()); }

      2.创建视图,和控制器的视图是一个套路,不过这个是在哪个控制的视图中调用,就要把视图建在哪个控制器的视图文件下,说起来有点拗口,举例来说我的动态菜单要是在Home 控制器index页面调用,那就需要在View/Home/文件夹下面新建一个 Component 文件夹,注意文件夹名字必须是这个,再在这个文件夹下新建一个叫Menu的文件夹(即你新建的ViewComponet的名字),最后就是创建视图页面了,这个页面的名字默认是Default,这样你在你的Invoke方法中 不指定名字直接返回 View的时候,找的就是这个default视图。如果你想取个其他的名字比如叫Menu,那invoke中返回的就应该是 return View("Menu",model) 。

      因为菜单是全局的,所以我是把我的viewcomponent放在了share文件夹中,这样每个页面都能访问到,文件夹结构如下,invoke返回的时候指定下名字就行

    3.调用。在需要访问的页面中调用    @await Component.InvokeAsync("Menu",new { status ="admin"});这个方法的参数是可自定义的,就看你自己需要写啥

  • 相关阅读:
    【Mysql】Mysql在Linux操作系统下在线安装
    【Mysql】Mysql实战:分页查询、(批量)添加、修改、(批量)删除
    【Nginx】Ngnix在Linux操作系统下的安装及搭建
    【Linux】Shell-解压/压缩、软件安装(jdk、tomcat)
    【Linux】用户创建修改切换、文件权限管理
    【Linux】文件操作命令、管道命令、文件编辑命令(VI)
    kafka学习 回顾以及新知识
    Scale Up 和 Scale Out存储架构
    计算机五层网络模型--回顾
    kafka学习(一)
  • 原文地址:https://www.cnblogs.com/huanglin101/p/6215188.html
Copyright © 2011-2022 走看看