PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(四)

news2024/11/17 19:51:49
无论100个表还是30个表,在使用PasteForm模式的时候,管理端的页面是一样的,大概4个页面,
利用不同操作模式下的不同dto数据模型,通过后端修改对应的dto可以做到控制前端的UI,在没有特别特殊的需求下可以做到快速的实现CRUD!
免去版本兼容问题,免去前后端不一致的问题,免去样式不一的问题!
基于PasteForm的思想,你也可以用其他语言实现,比如java+vue,或者php+angluar等

image

距上次之后,那么多天就一晃而过了,在这段时间我还是继续使用PasteForm进行开发新的项目,发现了新的问题,或者说不足,所以对原来的进行了一些补充!

表格按照权限区别回显

比如你可以设定为拥有某一个权限的账号,返回菜单三,而没有这个权限的则不返回这个权限,这里的案例是在表格的数据中,所以我们找到对应的ReadListModel的接口中,按照如下操作即可

        /// <summary>
        /// 读取ListDto的数据模型
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public PasteBuilderHelper.VoloModelInfo ReadListModel()
        {
            var _model = PasteBuilderHelper.ReadModelProperty<StoreInfoListDto>(new StoreInfoListDto());
            var _query_model = PasteBuilderHelper.ReadModelProperty(new InputQueryStore());
            if (_query_model != null)
            {
                _model.QueryProperties = _query_model.Properties;
            }
            var _isroot = base.IsSuper();
            if (!_isroot)
            {
                var prost = _model.Properties.Where(x => x.Name == "Menu3" || x.Name == "Menu4").ToList();
                if(prost!=null && prost.Count > 0)
                {
                    foreach(var ii in prost)
                    {
                        _model.Properties.Remove(ii);
                    }
                }
            }
            return _model;
        }

如上所示,表示如果没有超级权限(IsSuper()),则移除对象Menu3和Menu4,这2个字段是我自定义的菜单,这样就实现比如张三登陆看到了这2个菜单,而李四登陆则看不到这两个菜单了!改动后接口升级后前端即时生效,避免版本过渡的问题!
同理,你也可以基于不同的权限对一些字段进行特殊的处理!

自定义上传文件的问题

之前使用了file的属性,定义文件上传,默认args1的参数是自定义路径,后面由于其他的需求,参考了menu的定义,引入了args3,可以自定义function,比如我的!

        /// <summary>
        /// 用户数据
        /// </summary>
        [ColumnDataType("file", "", "", "global_upload_media(this);")]
        public string UploadMedia { get; set; } = "点击上传数据文件(*.mp3)";

注意ColumnDataType总共有6个参数,分别为name,args1,args2,args3,args4,error,默认都是空值!

表单中自定义样式

有时候我们需要对表单的一个项加入一些样式,也就是css中的style=“xxxx”;这个时候你可以在字段上标注style,如下

        /// <summary>
        /// 备注
        /// </summary>
        [ColumnDataType("textarea")]
        [ColumnDataType("style", "height:90px;")]
        public string Mark { get; set; } = "";

比如上面的,定义了2个属性,当前字段使用textarea来显示,然后配置了这个的高度为90px;
image

query的重新定义

比如有时候我们打开一个页面,会传入参数
示例

pasteform/index.html?path=roleInfo&gradeId=5

表示的意思是,我要显示权限roleInfo列表,传入的参数为gradeId=5,所以在index.html页面中,获得参数gradeId后,则搜索项中的gradeId承载的字段会隐藏,同时赋值为5,如果这个搜索项gradeId对应的字段没有从query参数中获取到值,则这个搜索项不会自动隐藏,当然了,你也可以标记hidden来主动隐藏他!
搜索项中隐藏的字段,注意默认值,比如orderby,如果你没有给默认值,就会造成搜索的时候基于空排序,这个时候会不会报错?

form中的id重新定义

有时候我们需要在新增数据的时候自定义主键Id,一般的Id是默认隐藏的,这个时候就有点尴尬了,又由于比如Int类型,有时候允许不写,也就是值为0,这个时候required就不太适用了,所以更改规则为有字段描述的为显示,否则按照默认的隐藏处理

        ///<summary>
        ///ID 必填项目(注意这里的注释,中间用空格隔开,空格前面是名称,后面是注释)
        ///</summary>
        [Required]
        [MaxLength(32)]
        public string Id { get; set; } = "";

form中image的调整

如果图片为单图模式,则占用表单的半行,旧版本为image就占用一行!
image

switch属性添加args1的支持

有时候我们希望显示swtich,有时候又不希望显示,比如权限的列表中有IsEnable表示状态,当当前模式为model=bind的时候,我们往往希望读取的是IsEnable==true的数据,然后extendBind为是否绑定的字段,这个时候就需要配置IsEnable在view的时候才显示switch,其他模式为true/false显示,也就是不可操作的模式,所以就有!

        ///<summary>
        ///状态
        ///</summary>
        [ColumnDataType("switch","view")]
        public bool IsEnable { get; set; }

        /// <summary>
        /// 绑定 扩展基于角色的时候是否拥有这个权限
        /// </summary>
        [ColumnDataType("switch")]
        [ColumnDataType("hidden", "bind")]
        public bool ExtendBind { get; set; }

上面的代码注意!!!
hidden表示当前为bind的时候不隐藏,而不是bind的时候隐藏
switch表示,当前为bind的时候显示switch模式,而不是bind的时候不显示switch,也就是显示true/false模式,
如果switch的args1不填写,也就是保持空,则表示任何模式都显示switch模式
ps:上面说的model是指pasteform/index.html的展示方式,有view,select,bind三种模式
view默认的模式,就是表格数据展示
select表示的是使用属性outer的时候选择这个对象的显示模式
bind模式为,比如为角色绑定权限,这个时候需要罗列所有的权限,已经绑定的则switch打开了!
image
上图为为某一个角色绑定权限,可以看到状态为true/false的不可交互的显示,而extendBind则显示为switch的可交互方式!
而在默认view的时候,状态又是可交互的switch模式,这个时候的绑定是隐藏的,如下图
image

【【【在使用PasteForm模式中,你是否还有其他问题,可以在评论中留言,我们下期见】】】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2200707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【光追模组】雷神之锤4光追mod,调色并修改光影,并且支持光追效果,游戏画质大提升

大家好&#xff0c;今天小编我给大家继续引入一款游戏mod&#xff0c;这次这个模组主要是针对雷神之锤4进行修改&#xff0c;如果你觉得游戏本身光影有缺陷&#xff0c;觉得游戏色彩有点失真的话&#xff0c;或者说你想让雷神之锤4这款游戏增加对光线追踪的支持的话&#xff0c…

在docker中安装并运行mysql8.0.31

第一步&#xff1a;命令行拉取mysql镜像 docker pull mysql:8.0.31查看是否拉取成功 docker images mysql:latest第二步&#xff1a;运行mysql镜像&#xff0c;启动mysql实例 docker run -p 3307:3307 -e MYSQL_ROOT_PASSWORD"123456" -d mysql:8.0.313307:3307前…

FMCW 雷达芯片关键技术学习

CLOCK GENERATION 借助外部晶体产生的 50 MHz 时钟&#xff0c;时钟生成模块为 RF 子系统生成 76 至 81 GHz 时钟信号。时钟生成模块包含内置振荡器电路、参考 PLL、FMCW PLL 和 X4 乘法器。内置振荡器电路与外部晶体一起为参考 PLL 生成 50 MHz 时钟。参考 PLL 为 FMCW PLL 和…

腾讯云SDK项目管理

音视频终端 SDK&#xff08;腾讯云视立方&#xff09;控制台提供项目管理功能&#xff0c;您可参照以下步骤为您的应用快速添加音视频通话能力和多人音视频互动能力。 若需正式开发并上线音视频应用&#xff0c;请在完成创建后&#xff0c;参照 集成指南 进行开发包下载、集成…

fastadmin 列表页表格实现动态列

记录&#xff1a;fastadmin 列表页表格实现动态列 后端代码 /*** 商品库存余额表*/public function kucunbalance(){$houseList (new House)->where([shop_id>SHOP_ID])->order(id desc)->field(name,id)->select();//设置过滤方法$this->request->filte…

Java速成之反射,轻松搞定反射

Hello&#xff0c;大家好&#xff0c;我是Feri&#xff0c;一枚十多年的程序员&#xff0c;同时也是一名在读研究生&#xff0c;关注我&#xff0c;且看一个平凡的程序员如何在自我成长&#xff0c;只为各位小伙伴提供编程相关干货知识&#xff0c;希望在自我蜕变的路上&#x…

记录一次搭建Nacos集群的问题

Java环境&#xff1a;jdk1.8.0_231 Nacos版本&#xff1a;nacos-server-2.2.0.zip 虽然官方推荐的是3个节点&#xff0c;我们还是使用的是2个节点&#xff0c;首先解压创建nacos_config库&#xff0c;导入nacos/conf目录下的mysql-schema.sql SQL文件&#xff0c;如下表&…

ubuntu双系统分区划分

EFI系统分区&#xff08;Windows&#xff09;&#xff1a;自Windows 8起&#xff0c;UEFI模式下的BIOS使用该分区。简单来说&#xff0c;它用于存储已安装系统的EFI引导程序。此分区在资源管理器中无法查看&#xff0c;因为它没有驱动器号&#xff0c;但它必须存在&#xff0c;…

【ISAC】通感算一体化

北京邮电大学冯志勇&#xff1a;面向智能交通的通感算一体化网络技术 香港中文大学&#xff08;深圳&#xff09;许杰&#xff1a;面向通感算融合的无线资源优化 三者逻辑 感知增强: 多个视角的通信&#xff0c;感知其他视角看不到的通信增强&#xff1a;以前做信道估计都是盲的…

ctfshow-web 萌新题

给她 spring漏洞 pyload: 1.dirsearch扫描&#xff0c;发现git 2. GitHack工具得到.git文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>…

01 Solidity--

第一个 Solidity 程序 Solidity 是一种用于编写以太坊虚拟机&#xff08;EVM&#xff09;智能合约的编程语言。 掌握 Solidity 是参与链上项目的必备技能 在 Remix 中&#xff0c;左侧菜单有三个按钮&#xff0c;分别对应文件&#xff08;编写代码&#xff09;、编译&#x…

CUDA编程基础概念

1. CPU和GPU 其中绿色的是计算单元&#xff0c;橙红色的是存储单元&#xff0c;橙黄色的是控制单元。 2. 什么样的任务适合GPU&#xff1f; 计算密集型的程序。易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构。 3. 内存模型以及硬件 Device对应…

QD1-P9 HTML常用标签:超链接(1)

本节学习&#xff1a;HTML 超链接标签&#xff0c;也就是 a 标签。 在前端开发中&#xff0c;<a>​ 标签是超链接&#xff08;anchor&#xff09;标签&#xff0c;用于创建指向其他网页、文件、位置等的链接。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p9 简单示…

【模板进阶】std::function

一、 s t d : : f u n c t i o n std::function std::function的介绍 s t d : : f u n c t i o n std::function std::function是 C 11 C11 C11引入的一个可调用对象包装器&#xff0c;它可以通过指定模板参数&#xff0c;统一来处理各自可调用对象。 二、实现类似 s t d : …

食家巷小程序:品味平凉美食,领略甘肃风情

甘肃平凉犹如一颗璀璨的明珠&#xff0c;散发着独特的魅力。这里不仅有壮丽的自然风光&#xff0c;更有令人垂涎欲滴的美食。而食家巷小程序&#xff0c;就如同一个神奇的美食宝库&#xff0c;将平凉的美味呈现在你的指尖。 &#x1f4a5;平凉&#xff0c;美食的天堂。 平凉红…

erlang学习:Linux命令学习11

crontab命令 crontab命令是用于管理定时任务的命令行工具。它提供了多种选项和参数&#xff0c;可以用来创建、编辑、查看和删除用户的定时任务。 常用命令 以下是一些常用的crontab命令&#xff1a; crontab -e&#xff1a;编辑当前用户的定时任务列表。该命令会在默认编辑…

高产胜母猪,带你上线我的新项目!

大家好&#xff0c;我是程序员鱼皮。9月&#xff0c;我处于极度爆肝状态&#xff0c;成功完结了最新带大家做的项目 面试刷题平台 。 当我们做完一个项目后&#xff0c;一定要记得把项目上线&#xff0c;这样才算是完成了学习的 “闭环”&#xff0c;写到简历上也才有竞争力。 …

鲁班到家上门安装维修系统源码开发之结构功能解析

随着物联网和智能家居的普及&#xff0c;消费者对便捷、高效的生活方式需求日益增加。鲁班到家作为一款专注于家居安装维修服务的平台&#xff0c;凭借其多渠道预约、智能派单、在线支付与费用明细透明等优势&#xff0c;在市场上赢得了广泛认可。本文将详细解析鲁班到家上门安…

flash-attention代码逻辑

setup.py&#xff1a;python项目中&#xff0c;setup.py用于管理项目的构建、打包和分发过程。这个文件通常包含项目的元数据以及如何构建和安装模块的指令 三个相关命令 构建扩展模块&#xff1a;python setup.py build_ext清理构建文件&#xff1a;python setup.py clean安装…

扩展欧几里得算法 C++

题一 扩展欧几里得算法 解题思路 原链接&#xff1a;https://www.acwing.com/solution/content/1393/&#xff08;下同&#xff09; 代码实现 #include<iostream>using namespace std;void exgcd(int a, int b, int &x, int &y) {if(b 0){x 1, y 0;return ;…