mcpField
S
syncfusion-aspnetcore-context-menu

syncfusion-aspnetcore-context-menu

github.com/syncfusion开发098 次安装3 周前更新
代码仓库

关于 syncfusion-aspnetcore-context-menu

面向 ASP.NET Core 开发者的 Syncfusion ContextMenu 实现指南,涵盖上下文菜单的配置与交互。支持嵌套菜单、模板、事件和 RTL 等定制。

主要功能

  1. 01按目标元素触发菜单
  2. 02构建多级嵌套菜单
  3. 03配置图标与导航链接
  4. 04自定义模板和菜单事件
  5. 05支持滚动、动画与 RTL
  6. 06持久化状态并设置本地化

适用场景

  1. 01为文件列表添加操作菜单
  2. 02为数据网格行提供操作项
  3. 03在编辑器中展示格式命令
  4. 04为应用页面提供导航快捷入口

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/aspnetcore-ui-components-skills --skill syncfusion-aspnetcore-context-menu

安装后在 Claude Code 中输入/syncfusion-aspnetcore-context-menu确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
animation-scrolling.md
api-reference.md
event-handling.md
getting-started.md
icons-navigation-customization.md
menu-items-and-data-binding.md
templates-customization.md

详细介绍

实现 Syncfusion ContextMenu

何时使用此技能

在需要以下功能时使用 ContextMenu 组件:

  • 显示上下文相关菜单:在目标元素上通过右键单击或长按触发
  • 创建多层嵌套菜单:使用分层的菜单项结构
  • 为菜单项添加图标和视觉指示:使用 CSS 图标类
  • 在菜单项中实现导航链接:跳转到不同页面
  • 处理菜单项选择:使用程序化逻辑或事件驱动逻辑
  • 自定义菜单外观:使用 CSS 类、模板和动画
  • 支持键盘导航:实现无障碍菜单交互
  • 启用可滚动菜单:当菜单项过多、超出视口时使用
  • 应用动画:为子菜单过渡效果设置多种动画选项
  • 保持组件状态:在页面重新加载后保留状态,并维持区域设置自定义项
  • 支持 RTL(从右到左)渲染:用于国际化应用
  • 渲染自定义项模板:构建超出简单文本范围的复杂菜单项布局

组件概述

Syncfusion ContextMenu 是一个轻量级导航组件,可在用户交互(通常是右键单击目标元素)时显示命令或菜单项列表。它提供以下功能:

  • 基于目标触发:通过 CSS 选择器将上下文菜单附加到特定 DOM 元素
  • 多层嵌套:支持在父菜单项中嵌套子菜单项
  • 图标支持:为菜单项应用 CSS 图标类(例如,e-icons、Font Awesome)
  • 导航集成:通过菜单项的 URL 属性直接导航
  • 丰富的动画:提供多种过渡效果(SlideDown、ZoomIn、FadeIn、None),且可配置持续时间
  • 可滚动内容:为超出视口高度的菜单启用垂直滚动
  • 模板自定义:为复杂的菜单项布局定义自定义 HTML 模板
  • 事件系统:捕获菜单生命周期事件(beforeOpen、onOpen、select、beforeClose、onClose)
  • 项渲染钩子:使用 beforeItemRender 事件,在每次渲染时自定义单个菜单项
  • 选择器筛选:使用 CSS 选择器模式筛选容器中的目标元素
  • 悬停延迟:配置悬停后子菜单出现前的延迟时长
  • 状态持久化:在页面重新加载后自动恢复组件状态
  • 区域设置支持:覆盖全局区域设置,为组件单独进行本地化
  • RTL 支持:为 RTL 语言自动进行从右到左的渲染
  • HTML 净化:可选地净化菜单项中不受信任的 HTML 内容
  • 子菜单行为:控制子菜单是悬停时打开还是仅在单击时打开

文档与导航指南

入门

📄 阅读: references/getting-started.md

  • 先决条件和 ASP.NET Core 项目设置
  • 安装 NuGet 包(Syncfusion.EJ2.AspNet.Core)
  • 在 _ViewImports.cshtml 中注册 TagHelper
  • 样式表和脚本资源引用
  • 注册 Script Manager
  • 使用目标元素实现基本的 ContextMenu
  • 使用简单菜单项渲染第一个上下文菜单
  • 使用 items 属性进行初始数据绑定
菜单项与数据绑定

📄 阅读: references/menu-items-and-data-binding.md

  • MenuItem 结构和必需属性(text、id)
  • 使用 List 和 JSON 对象的数据绑定模式
  • 菜单项属性:text、id、separator、iconCss、items、url
  • 创建单层和多层嵌套菜单
  • 使用分隔符进行视觉分组(separator: true)
  • 动态更新和修改菜单项
  • 本地数据源模式和数据转换
图标、导航和自定义

📄 阅读: references/icons-navigation-customization.md

  • 使用 iconCss 属性为菜单项添加图标
  • 使用 e-icons CSS 类添加 Syncfusion 内置图标
  • 使用 URL 属性为菜单项添加导航链接
  • 创建操作类和导航类菜单项
  • 使用自定义 CSS 类设置菜单项样式(cssClass 属性)
  • 配置悬停延迟(hoverDelay 属性)
  • 使用筛选器选择器匹配目标元素(filter 属性)
动画和滚动

📄 阅读: references/animation-scrolling.md

  • 配置 animationSettings 以设置子菜单过渡效果
  • 动画效果:None、SlideDown、ZoomIn、FadeIn
  • 设置动画时长和缓动属性
  • 使用 enableScrolling 属性处理较长的菜单列表
  • 菜单项溢出时的垂直滚动行为
  • 使用 BeforeOpen 事件动态调整菜单高度
  • 可滚动菜单的性能注意事项
模板和自定义渲染

📄 阅读: references/templates-customization.md

  • 使用 itemTemplate 属性自定义菜单项布局
  • 使用 beforeItemRender 事件自定义单个菜单项
  • 在菜单项中渲染自定义 HTML
  • 向菜单项添加 UI 组件(复选框、输入框)
  • beforeItemRender 中的事件参数(MenuEventArgs 中的 name 属性)
  • 根据数据动态生成菜单项 HTML
  • 通过渲染后的元素自定义 CSS
事件处理和集成

📄 阅读: references/event-handling.md

  • 使用 select 事件处理菜单项选择或点击
  • 打开子菜单前触发 beforeOpen 事件
  • 关闭菜单前触发 beforeClose 事件
  • 打开子菜单时触发 onOpen 事件
  • 关闭菜单时触发 onClose 事件
  • 使用 beforeItemRender 事件在渲染时进行自定义
  • 使用 created 事件指示组件已完成初始化
  • 事件驱动的菜单操作和条件逻辑

快速入门示例

Razor 标记(Index.cshtml):

@page
@model IndexModel

<div id="target">Right-click me</div>

<ejs-contextmenu id="contextmenu" target="#target" items="Model.MenuItems"></ejs-contextmenu>

PageModel(Index.cshtml.cs):

public class IndexModel : PageModel
{
    public List<object> MenuItems { get; set; }
    
    public void OnGet()
    {
        MenuItems = new List<object>
        {
            new { text = "Cut", id = "cut", iconCss = "e-icons e-cut" },
            new { text = "Copy", id = "copy", iconCss = "e-icons e-copy" },
            new { text = "Paste", id = "paste", iconCss = "e-icons e-paste" },
            new { separator = true },
            new { 
                text = "Font", 
                id = "font",
                items = new List<object>
                {
                    new { text = "Bold", id = "bold" },
                    new { text = "Italic", id = "italic" }
                }
            }
        };
    }
}

常见模式

模式用例参考
右键菜单由鼠标右键触发的上下文菜单getting-started.md
分层菜单项多层嵌套的菜单结构menu-items-and-data-binding.md
图标支持带有可视图标的菜单项icons-navigation-customization.md
导航链接作为导航快捷方式的菜单项icons-navigation-customization.md
动画过渡子菜单显示效果animation-scrolling.md
可滚动菜单带有溢出内容的长菜单列表animation-scrolling.md
自定义模板复杂的菜单项布局templates-customization.md
选择处理响应菜单项选择event-handling.md
悬停延迟控制子菜单显示时机icons-navigation-customization.md
RTL 支持从右向左的语言渲染getting-started.md

关键属性

属性类型用途示例
targetstring目标元素的 CSS 选择器"#menuTarget" 或 ".menu-area"
itemsMenuItemModel[]菜单项定义数组包含 text、id 属性的对象列表
animationSettingsMenuAnimationSettingsModel子菜单打开动画配置effect: "ZoomIn",duration: 500
enableScrollingboolean为溢出内容启用垂直滚动大型菜单设为 true
hoverDelaynumber悬停时子菜单打开前的延迟(毫秒)500
showcItemOnClickboolean仅在点击时打开子菜单设为 true 可禁用悬停打开
itemTemplatestring or Function菜单项的自定义 HTML 模板HTML 字符串或回调函数
cssClassstring用于设置菜单包装器样式的 CSS 类"custom-context-menu dark-theme"
filterstring用于筛选目标元素的 CSS 选择器".menu-enabled"
enableRtlboolean从右向左渲染true
enablePersistenceboolean页面重新加载后保留状态true
localestring覆盖组件区域设置"fr-FR"
enableHtmlSanitizerboolean清理不可信的 HTMLtrue(用户内容建议启用)

常见用例

1. 文件管理器上下文菜单 为文件列表添加上下文菜单,以便执行剪切、复制、粘贴、删除和重命名操作,并显示图标。

2. 文本编辑器工具栏 通过右键菜单提供格式选项(粗体、斜体、下划线)和文本处理功能。

3. 数据网格行操作 在网格行上显示上下文菜单,以便对选中的行执行编辑、查看、删除和导出操作。

4. 导航快捷方式 提供快捷访问菜单,其中包含指向应用程序不同分区或外部资源的链接。

5. 多语言支持 配置特定区域设置的格式,并覆盖默认区域设置,以支持全球化应用程序。


后续步骤

  • 查看API 参考,了解完整的属性和方法文档
  • 将 ContextMenu 与其他导航组件(Toolbar、Sidebar)结合使用,构建全面的 UI
  • 除上下文菜单外,还应实现键盘快捷键,以增强可访问性
  • 如果面向国际用户,请测试 RTL 渲染
  • 渲染大量菜单列表(>100 项)时,请考虑其对性能的影响

评论

支持 Markdown