『贴代码』
PasteSpider
PasteApeart
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
[PasteApeart]表格中的菜单要按照不同权限,数据显示,咋处理?
世事无常本无罪 2026-07-31 69 1 4
开发中会经常遇到的一个问题,就是操作区域的可见性,和可控性,会基于权限(用户),状态(数据)等实现菜单的显示和隐藏等,一起来看看PasteAepart(PasteForm)是如何解决这个问题的!

--------------------------------------------------------------------------------------------------------------

PasteForm的升级版PasteApeart,享受极致简洁的框架的魅力,点击查看文档

--------------------------------------------------------------------------------------------------------------

先来看一下效果
图片alt
可以看到上方的菜单中,中间这一行只有2个菜单,在实际开发中,我们主要遇到这样的几种情况

普通菜单

        /// <summary>
        /// 
        /// </summary>
        [PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
        public int Menu1 { get; }

普通菜单很简单,直接这样写就可以了,这个的写法和前端有关,注意数据字段到前端的时候,默认首单词小写,你也可以用另外一种写法

        /// <summary>
        /// 
        /// </summary>
        [PasteMenuhtml]
        public string Menu11 => $"<a href=\"javascript:;\" onclick=\"open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={Id}','80%','80%')\">绑定权限</a>";

上面这两种写法是等效的,不过要注意内容不一样,你要是注意看的话会发现,比如他们的特性不一样,一个是[PasteMenu]一个是[PasteMenuhtml]

基于权限

有时候,我们要基于权限来显示,也就是不同人登录,看到不一样的数据


        /// <summary>
        /// 权限模式
        /// </summary>
        [PasteHidden]
        [PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
        public int Menu3 { get; }

        /// <summary>
        /// 条件权限模式
        /// </summary>
        [PasteHidden]
        [PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
        public int Menu32 { get; }

自信观察,会发觉就是加了一个参数btnCode,这个字段要启用,在读取模板的时候,需要读取当前用户的按钮权限列表!

千呼万唤始出来,按钮控制终于来了!!!PasteApeart实现权限按钮就是这么简单

注意,使用了btnCode一定要配置特性[PasteHidden]

基于数据

基于数据,就是和数据有关,啥时候显示,啥时候不显示


        /// <summary>
        /// 条件模式
        /// </summary>
        [PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
        public int Menu31 { get; }

        /// <summary>
        /// 条件权限模式
        /// </summary>
        [PasteHidden]
        [PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
        public int Menu32 { get; }

        /// <summary>
        /// 直接渲染UI 
        /// </summary>
        [PasteMenuhtml]
        public string Menu2 => IsEnable ? $"<a href=\"javascript:;\" onclick=\"open_window('{Name}的详细','./pasteform/detail.html?path=gradeInfo&id={Id}','','90%')\">{IsEnable}</a>" : $"";

可以看到上面的,一个是基于id是否=2来判断,你也可以基于其他字段判断,不过有一点要注意!
当字段的类型是枚举类型的时候,不能直接这样判断,你要get一个int值得字段出来

图片alt

上面说的是后端得代码
前端部分,还有一个关键点,就是菜单区域得宽度,这个有一个默认值,你也可以配置

_config.menu_max_width
这个默认值是500宽度,也就是最大菜单宽度多少,超过就换行了!
你也可以通过query来配置
比如

./pasteform/index.html?path=userInfo&menu_max_width=600

熟记这几个,那么菜单问题你就能搞定了!!

评论列表
世事无常本无罪
1 69 4
快捷注册
用户问答更多
PasteApeart和PasteForm如何选择?
  • 不用选,后面都是PasteApeart,他们其实是一个东西

PasteApeart中有多层级继承的,表单中的字段排列顺序有什么规则?
  • 看版本,PasteApeart.Helper 26.9.2之后,就按照基类前面的顺序了,也符合阅读顺序,当然你可以使用PasteSort再次改变他!

PasteForm,神奇了啊!都说低代码,低代码,那个是对于非开发者来说的,感觉PasteForm就是开发者的低代码啊!只要配置好Model,就有对应的CRUD操作,还带一些逻辑,和生成代码是两码事了!!!问题来了,有什么局限性,或者适用哪些场景?
  • 1.语言吧,这本身只是一个开发思想,其实其他语言也可以用,不过最优雅实现的还是.NET

    2.特别适用于需要表单,表格的系统,所以哪些EMS,CRM,ERP等都合适

    3.扩展,比如这个思想,你也可以应用于C/S,理论上也是可以的

    4.这个主要针对的是管理端,附带UI的CRUD,也就是说对于业务代码,是没影响的!

    5.可能入门会麻烦点,毕竟有接近100个PasteXXXX特性要了解,幸运的是都是Paste开头,官方的也支持,比如MaxLength,Required等!

最新动态
  • 142.****.82 正在查看 文章列表页 !
  • 185.****.13 正在查看 关于PasteSpiderV2版本升级V5版本后,部署的服务会走一遍扩容的说明 !
  • 40.****.3 正在查看 12306班次筛选座位逻辑 !
  • 114.****.237 正在查看 Document:spider !
  • 52.****.208 正在查看 使用Obfuscar混淆(加密)你的程序源码并一键发布! !
  • 218.****.141 正在查看 PasteApeart框架介绍,PasteApeart为啥说是敏佳开发天花板,看这篇就够了 !
  • 216.****.137 正在查看 使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起 !
  • 36.****.7 正在查看 主页pastespider !
  • 122.****.51 正在查看 有哪些高大上的词语,你有没有被虎得一愣一愣得,一起来看看AI的吐槽! !
  • 36.****.208 正在查看 PasteApeart框架介绍,PasteApeart为啥说是敏佳开发天花板,看这篇就够了 !
  • 40.****.40 正在查看 使用Obfuscar混淆(加密)你的程序源码并一键发布! !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2