当前位置: 首页 > article >正文

asp.net Core 使用Layui 框架,用 PartialView作为左侧菜单项,进行动态加载

用 PartialView作为左侧菜单项进行动态加载1. 作品展示2. 定义菜单数据模型// Models/MenuItem.cspublicclassMenuItem{publicintId{get;set;}publicstringName{get;set;}// 菜单名称publicstringIcon{get;set;}// 图标例如layui-icon layui-icon-facepublicstringUrl{get;set;}// 点击后打开的页面地址publicintParentId{get;set;}// 父级ID用于构建树形结构publicintSortOrder{get;set;}// 排序publicListMenuItemChildren{get;set;}newListMenuItem();}3. 控制器实现publicclassHomeController:Controller{privatereadonlyILoggerHomeController_logger;publicHomeController(ILoggerHomeControllerlogger){_loggerlogger;}publicIActionResultIndex(){returnView();}// 获取左侧菜单的 PartialViewpublicasyncTaskIActionResultGetLeftMenu(){// 模拟从数据库获取菜单数据实际开发中请从Service获取varmenuListawaitGetMenuDataAsync();// 构建树形结构varmenuTreeBuildTree(menuList,0);returnPartialView(_LeftMenu,menuTree);}// 模拟数据源privateTaskListMenuItemGetMenuDataAsync(){varmenusnewListMenuItem{newMenuItem{Id1,Name仪表盘,Iconlayui-icon-home,Url/Home/Dashboard,ParentId0,SortOrder1},newMenuItem{Id2,Name系统管理,Iconlayui-icon-set,Url#,ParentId0,SortOrder2},newMenuItem{Id3,Name用户管理,Iconlayui-icon-user,Url/User/Index,ParentId2,SortOrder1},newMenuItem{Id4,Name角色管理,Iconlayui-icon-group,Url/Role/Index,ParentId2,SortOrder2},newMenuItem{Id5,Name日志管理,Iconlayui-icon-log,Url/Log/Index,ParentId2,SortOrder3}};returnTask.FromResult(menus);}// 构建树形结构privateListMenuItemBuildTree(ListMenuItemsource,int?parentId){returnsource.Where(xx.ParentIdparentId).OrderBy(xx.SortOrder).Select(xnewMenuItem{Idx.Id,Namex.Name,Iconx.Icon,Urlx.Url,ParentIdx.ParentId,SortOrderx.SortOrder,ChildrenBuildTree(source,x.Id)}).ToList();}}4. 主视图 (Views/Home/Index.cshtml){ Layout null; }!DOCTYPEhtmlhtmlheadmetacharsetutf-8metanameviewportcontentwidthdevice-width, initial-scale1titleASP.NET Core Layui 后台管理/titlelinkrelstylesheethref~/lib/layui/css/layui.css/style/* 自定义样式 */.layui-layout-admin .layui-body{bottom:0;overflow:hidden;}.layui-tab-content{height:calc(100vh - 110px);padding:0;}.layui-tab-item{height:100%;}iframe{width:100%;height:100%;border:none;}/style/headbodyclasslayui-layout-bodydivclasslayui-layout layui-layout-admin!-- 顶部导航栏 --divclasslayui-headerdivclasslayui-logo后台管理系统/divulclasslayui-nav layui-layout-rightliclasslayui-nav-itemahrefjavascript:;imgsrc~/images/default-avatar.pngclasslayui-nav-img管理员/adlclasslayui-nav-childddahref基本资料/a/ddddahref修改密码/a/ddddaasp-actionLogoutasp-controllerAccount退出/a/dd/dl/li/ul/div!-- 左侧菜单容器 --divclasslayui-side layui-bg-blackidleftMenuContainerdivclasslayui-side-scroll!-- 这里将通过 Ajax 加载 PartialView --dividmenuLoadingstyletext-align:center;padding:20px;color:#ccc;iclasslayui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop/i加载菜单中.../div/div/div!-- 右侧主体内容Layui 选项卡容器 --divclasslayui-bodydivclasslayui-tablay-filtertablay-allowClosetrueulclasslayui-tab-titleliclasslayui-thislay-idhome首页/li/uldivclasslayui-tab-contentdivclasslayui-tab-item layui-showiframesrcUrl.Action(Welcome,Home)/iframe/div/div/div/div/divscriptsrc~/lib/jquery/dist/jquery.min.js/scriptscriptsrc~/lib/layui/layui.js/scriptscriptlayui.use([element,layer],function(){varelementlayui.element;varlayerlayui.layer;var$layui.$;// 加载左侧菜单loadLeftMenu();functionloadLeftMenu(){$.ajax({url:Url.Action(GetLeftMenu, Home),type:GET,success:function(html){$(#leftMenuContainer .layui-side-scroll).html(html);// 重新渲染导航菜单element.render(nav);},error:function(){$(#menuLoading).html(span stylecolor: #FF5722;菜单加载失败/span);}});}// 监听菜单点击事件通过事件委托$(document).on(click,.menu-item,function(e){e.preventDefault();varurl$(this).data(url);varname$(this).data(name);varid$(this).data(id)||tab_newDate().getTime();// 判断是否已存在选项卡if($(.layui-tab-title li[lay-idid]).length0){element.tabChange(tab,id);}else{// 新增选项卡element.tabAdd(tab,{title:name,content:iframe srcurl/iframe,id:id});element.tabChange(tab,id);}});// 选项卡切换时可以触发 iframe 的刷新可选element.on(tab(tab),function(data){console.log(切换到选项卡data.index);});});/script/body/html5. 左侧菜单 PartialView (Views/Home/_LeftMenu.cshtml)model IEnumerableMenuItemfunctions { // 递归渲染菜单的辅助方法 void RenderMenuItem(MenuItem item) { if (item.Children ! null item.Children.Any()) {liclasslayui-nav-itemahrefjavascript:;iclasslayui-icon item.Icon/ispanitem.Name/span/adlclasslayui-nav-childforeach (var child in item.Children) {ddahrefjavascript:;classmenu-itemdata-urlchild.Urldata-idchild.Iddata-namechild.Nameiclasslayui-icon child.Icon/ichild.Name/a/dd}/dl/li} else {liclasslayui-nav-itemahrefjavascript:;classmenu-itemdata-urlitem.Urldata-iditem.Iddata-nameitem.Nameiclasslayui-icon item.Icon/ispanitem.Name/span/a/li} } }ulclasslayui-nav layui-nav-treelay-filterleftMenuforeach (var menu in Model) { RenderMenuItem(menu) }/ulstyle/* 菜单图标样式 */.layui-nav-item .layui-icon{margin-right:8px;font-size:16px;}/* 子菜单缩进 */.layui-nav-child dd{padding-left:10px;}/style

相关文章:

asp.net Core 使用Layui 框架,用 PartialView作为左侧菜单项,进行动态加载

用 PartialView作为左侧菜单项,进行动态加载 1. 作品展示 2. 定义菜单数据模型 // Models/MenuItem.cs public class MenuItem {public int Id { get; set; }public string Name { get; set; } // 菜单名称public string Icon { get; set; } …...

Cyanine 5 TSA,Cy5 酪胺,1431148-26-3:该试剂可实现荧光标记物的局部沉积和信号放大。

基础试剂介绍英文名称:Cyanine 5 TSA,Sulfo-Cyanine5 tyramide中文名称:水溶Cy5 tyramide,Cy5 酪胺CAS 号:1431148-26-3分子式:C41H49N3O8S2分子量:775.97纯度:>95%外观性状&…...

对比一圈后 8个AI论文平台测评:继续教育毕业论文写作必备工具推荐

在当前学术研究日益数字化的背景下,AI写作工具已成为科研工作者不可或缺的辅助手段。然而,面对市场上琳琅满目的AI论文平台,如何选择真正适合自己的工具成为一大难题。为此,笔者基于2026年的实测数据与真实用户反馈,围…...

MySQL慢查询优化实战教程:200万数据从3秒优化到50ms(EXPLAIN + 索引设计 + 延迟关联)

手把手带你用 EXPLAIN 索引优化 SQL 改写,把一条 3 秒的慢查询干到50ms 以内。背景 最近在做一个电商项目的订单列表查询,页面加载巨慢。打开 Chrome DevTools 一看,一个接口响应 3.2 秒。排查下来,罪魁祸首是一条 SQL。这篇文章…...

龙虾虽好,预算要守!OpenClaw实力出众,合理控费更关键

没点进这篇文章的你,可能还未接触智能体;而点进来的你,大概率已经体验过“养龙虾”的便捷——这里说的,就是当下风靡全球的开源智能体OpenClaw。这只被网友亲切称为“赛博龙虾”的开源智能体,确实凭借突出的实用性收获…...

中国人民大学等顶尖高校联手破解大模型“懒惰“难题

这项由中国人民大学、澳门大学、中南大学、中国科学院大学、上海人工智能实验室、复旦大学、北京大学等多所顶尖院校联合开展的研究发表于2026年2月,论文编号为arXiv:2602.04935v2。有兴趣深入了解的读者可以通过这个编号查询完整论文。在人工智能助手日益普及的今天…...

鸿蒙真机调试

1、生成私钥和证书请求文件 打开DevEco Studio,点击【构建】->【生成私钥和证书请求文件】 以上步骤完成后,对应文件夹会出现三个文件: 2、证书文件 按步骤输入后会出现appid,如下图: 下一步需要添加设备&#xff…...

CSDN一亿技术人员的福音:专知智库OPC研究院发布“技术人一人公司赋能计划”

CSDN一亿技术人员的福音:专知智库OPC研究院发布“技术人一人公司赋能计划” CSDN有一亿技术人员。 这是一个惊人的数字。一亿个会写代码、懂逻辑、能解决问题的头脑,构成了中国数字经济的创造力底座。 但现实是,大多数技术人被困在这样一个…...

Openclaw玩转高德地图

🗺️ 通过本文可以满足类似如下需求 五一计划到昆明游玩,使用高德制作4天旅行攻略。同时将生成的旅行攻略发到钉钉群里,以满足行中探店、导航、打车、购票等出行需求。如下图所示: 用到了钉钉,Openclaw的对接可以参考前文https://blog.csdn.net/s060403072/article/deta…...

从金融OpenClaw热潮看企业架构如何落地“非侵入式”自动化

摘要 站在2026年3月13日这个时间节点回望,AI Agent(智能体)正经历着从“对话式玩具”向“生产力工具”的惊险一跳。近期,开源社区OpenClaw及其进阶版AlphaClaw在金融投研圈掀起的“龙虾热”,本质上是行业对自主执行AI的…...

Failed to create the npcap service: 0x8007007e

现象:安装wireshark报错“Failed to create the npcap service: 0x8007007e. Please try installing Npcap again, or use the latest official Npcap installer from https://npcap.com/” 原因: 未正确卸载而直接删除文件夹等原因所致 解决&#xff1…...

【多 Agent 协作系统】状态管理:共享记忆、分布式状态、一致性——构建可靠的多 Agent 状态系统!

【多 Agent 协作系统】状态管理:共享记忆、分布式状态、一致性——构建可靠的多 Agent 状态系统 状态管理是多 Agent 系统的核心挑战。本章将深入讲解共享记忆架构、分布式状态同步、一致性协议、状态持久化策略,以及状态管理的实战实现。 目录 前言:状态管理为什么重要 状态…...

ROS2 Topic 传输机制:板内 vs 跨板

ROS2 Topic 传输机制:板内 vs 跨板 1. 两种传输方式2. 传输决策逻辑场景传输方式是否反序列化同进程同节点Intra-Process (Zero-Copy)❌ 不需要同进程不同节点Intra-Process❌ 不需要不同进程DDS (UDP/TCP/Shared Memory)✅ 需要不同板块DDS (网络)✅ 需要3. Intra-…...

OpenClaw部署失败怎么办?云服务器常见问题汇总

很多开发者在部署OpenClaw时都会遇到各种问题,例如:安装失败、服务启动不了、端口无法访问等。OpenClaw部署失败到底该怎么解决?答案是:大部分部署问题其实都来自环境配置错误,例如Node.js版本不符合要求、服务器端口未…...

2026年丰县服务商TOP10榜单揭晓:谁才是口碑与效率双赢的行业标杆?

朋友们,最近丰县商家圈子里都在传一份榜单,说是2026年本地服务商TOP10。我特意去打听了一圈,发现这事儿挺有意思。有人说榜单是“虚名”,也有人说这是“风向标”。今天咱不吹不黑,就聊聊这份榜单背后,商家们…...

景区复购率低迷?全流程服务盘活留量|巨有科技

文旅行业复苏后,绝大多数景区都陷入了同一个运营怪圈:砸重金做营销、拓渠道抢新客,节假日客流爆满看似热闹,可游客离园之后,就彻底和景区断了联系,二次到访、多次复购的游客少之又少,老客留存率…...

电磁兼容性(EMC)设计与实践

现代工业自动化与智能制造领域,串口屏作为人机交互(HMI)的核心组件,其稳定性直接决定了设备的控制精度与用户体验。面对复杂的电磁环境,电磁兼容性(EMC)设计成为确保淘晶驰串口屏稳定运行的关键…...

通过fetch下载文件、音视频、图片

项目需要下载文件,后端接口返回的是文件的url地址,不是文件流 问题:直接通过a标签下载文件,若是接口返回音视频链接点击下载则是直接打开播放,不会下载 解决:使用 fetch 请求文件并将其下载到本地&#xff…...

谷歌浏览器更新后 localhost 127.0.0.1等本地服务器无法访问解决办法

今天2026-03-13谷歌更新版本后本地起前端服务谷歌浏览器所有本地服务均无法打开均报错为:ERR_CONNECTION_TIMED_OUT经过不段尝试 发现找到如下目录C:\Users\{xxxxxx}\AppData\Local\Google\Chrome\User Dataxxxx为win11用户名称 可自行替换找到根目录下Local State …...

基于SpringBoot+Vue的社区互助系统毕设项目(完整源码+论文+部署)

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css 开发工具:IDEA/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JDK版本&#…...

恳请大佬帮忙解惑!!!想用python写一个PDF图片转为excel表格的小工具

恳请大佬帮忙解惑,想用python写一个PDF图片转为excel表格的小工具,利用OCR来进行,但是效果不是很好,乱码比较多。恳求大佬帮忙!!!!...

扣子平台创建自己的插件

一、插件:里面有很多的工具 二、网页打开聚合数据(这是一个拥有很多工具的网站,可以通过API调用) 1、官网:https://www.juhe.cn/docs 2、注册、登录、认证 3、选择一个免费的工具,点击申请 4、申请完的工…...

硬盘二次开盘救回珍贵数据✨

临近春节假期,老客户的西数2T移动硬盘磁头坏了。由于我们公司春节提前放假了,客户着急忙慌的找其他小公司开盘恢复,直接判定盘片划伤无法恢复客户不甘心,等春节假期结束上班后找回我们,经检测硬盘其中有1张碟片严重划伤…...

基于Skynet增加RSA签名

一、背景 最近接入skynet做游戏的时候, 需要做一个自研 SDK 埋点对接,游戏服务器与 SDK 服务器通信需使用 RSA 签名规则: 游戏服务器调用 SDK:使用私钥签名(SHA1WithRSA) SDK 通知游戏服务器:使用公钥验签(SHA1WithRSA) 密钥编码:base64 所以写这个文档用于记录 二…...

【Java八股锁机制的认识】synchronized和reentrantlock区分,锁升级机制

synchronized和reentrantlock及其应用场景? synchronized 是什么 synchronized 是 Java 提供的 内置锁机制。 核心一句话:保证同一时间只有一个线程执行某段代码。例如 同时调用三个线程:线程A,线程B,线程C 有synchron…...

百考通AI文献综述:让研究起点更清晰

在学术研究的起步阶段,文献综述始终是奠定研究基础、厘清研究脉络的核心环节。它不仅需要广泛检索国内外文献,更要系统梳理研究进展、提炼核心观点、指出研究空白,对文献积累不足、时间精力有限的学子而言,常常陷入“文献难找、梳…...

题目2267:蓝桥杯2016年第七届真题-取球博弈

#include<iostream> #include<algorithm> using namespace std; int n[5], vis[1000][2][2];int dfs(int x, int f, int s) {if(vis[x][f%2][s%2] ! 2) {return vis[x][f%2][s%2];}if(x < n[1]) { // 不能取球了if((f%2 1) && (s%2 0)) return 1;els…...

混频器在雷达模块中的作用及原理……

混频器在雷达模块中的作用及原理…… 在超外差接收机里&#xff0c;正是混频器这个器件&#xff0c;把刚才聊的 RF&#xff08;射频&#xff09;和 IF&#xff08;中频&#xff09;联系在了一起。 如果说放大器是让信号变得更大&#xff0c;滤波器是让信号变得更纯&#xff0c;…...

百考通AI毕业论文智能生成,让学术创作高效又专业

又到毕业季&#xff0c;毕业论文成了无数学子的“心头大山”&#xff1a;选题迷茫、框架难搭、内容空洞、格式繁琐&#xff0c;从开题到定稿&#xff0c;每一步都充满挑战。熬夜赶稿、反复修改、焦虑失眠&#xff0c;成了很多毕业生的常态。百考通AI依托前沿人工智能技术&#…...

99个大模型在各个行业的应用的案例【2026最新】

精选99个标杆案例&#xff0c;划分为三大类别&#xff1a;45个"行业赋能"案例聚焦新型工业化、能源、医疗、政务等重点领域&#xff1b;46个"智能应用"案例覆盖天文、农业、化学等科学领域&#xff1b;8个"生态服务"案例包含智能数据标注、大模型…...