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

距上次之后,那么多天就一晃而过了,在这段时间我还是继续使用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;

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就占用一行!

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打开了!



上图为为某一个角色绑定权限,可以看到状态为true/false的不可交互的显示,而extendBind则显示为switch的可交互方式!

而在默认view的时候,状态又是可交互的switch模式,这个时候的绑定是隐藏的,如下图

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

PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(四)的更多相关文章

  1. 最佳实战Docker持续集成图文详解

    最佳实战Docker持续集成图文详解 这是一种真正的容器级的实现,这个带来的好处,不仅仅是效率的提升,更是一种变革:开发人员第一次真正为自己的代码负责——终于可以跳过运维和测试部门,自主维护运行环境( ...

  2. [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等

    本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...

  3. 《FPGA设计技巧与案例开发详解-第二版》全套资料包

    本人参与写的一本书(TimeQuest一章由我所写),希望大家多多支持: 全书配套资料上传各大网盘资料中附送大量源码,你值得拥有--<FPGA设计技巧与案例开发详解-第二版>全套资料包-V ...

  4. Mybatis案例超详解(上)

    Mybatis案例超详解(上) 前言: 本来是想像之前一样继续跟新Mybatis,但由于种种原因,迟迟没有更新,快开学了,学了一个暑假,博客也更新了不少,我觉得我得缓缓,先整合一些案例练练,等我再成熟 ...

  5. 详解WebService开发中四个常见问题(2)

    详解WebService开发中四个常见问题(2)   WebService开发中经常会碰到诸如WebService与方法重载.循环引用.数据被穿该等等问题.本文会给大家一些很好的解决方法. AD:WO ...

  6. 详解WebService开发中四个常见问题(1)

    详解WebService开发中四个常见问题(1)   WebService开发中经常会碰到诸如WebService与方法重载.循环引用.数据被穿该等等问题.本文会给大家一些很好的解决方法. AD:WO ...

  7. MongoDb进阶实践之三 Mongodb基本命令详解

    一.引言              从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...

  8. Docker入门与实践之 Dockerfile 语法详解

    一.Dockerfile 概述 Dockerfile是docker程序的解释脚本文件,Dockerfile 是一条一条的指令,Docker程序将dockerfile中的一条条指令编译成Linux可执行 ...

  9. hbase实践之数据读取详解

    hbase基本存储组织结构与数据读取组织结构对比 Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成.故hbase 1.*版 ...

  10. 《HTML5网页开发实例详解》连载(四)HTML5中的FileSystem接口

    HTML 5除了提供用于获取文件信息的File对象外,还添加了FileSystem相关的应用接口.FileSystem对于不同的处理功能做了细致的分类,如用于文件读取和处理的FileReader和Fi ...

随机推荐

  1. 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇

    1.简介 前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功.废话不多说 ...

  2. 5、SpringMVC之域对象共享数据

    5.1.域对象简介 请求域(request):一次请求范围内有效 会话域(session):一次会话范围内有效 应用域(application):整个应用范围内有效 5.2.环境搭建 5.2.1.右击 ...

  3. .NET 与 LayUI 实现高效敏捷开发框架

    前言 WaterCloud 是一个集成了 LayUI 的高效敏捷开发框架,专为 .NET 开发者设计. 它不仅支持多种 .NET 版本(.NET 4.5..NET Core 3.1..NET 5..N ...

  4. Java基础之时间类

  5. 软件开发工程师,几款常用的APP,你用过几款?最后一个测试网络必备

    作为一名程序员,手机里一定有几个常用的app,下面给大家推荐几款. 1. CSDN 国内最大编程论坛:虽然有多少人吐槽现在使用csdn就像屎里淘金, 但是不得不承认他仍然是大家搜索技术资料.问题的首选 ...

  6. 5 个有趣的 Python 开源项目「GitHub 热点速览」

    本期,我从上周的开源热搜项目中精心挑选了 5 个有趣.好玩的 Python 开源项目. 首先是 PyScript,它可以让你直接在浏览器中运行 Python 代码,不仅支持在 HTML 中嵌入,还能安 ...

  7. idea启动项目发现端口被占用!!!导致启动不起来

    windows端口被占用 netstat -ano |findstr 端口号 任务管理器详细信息 PID排序找到刚才查到的 右键结束 原因: idea被异常终止导致tomcat没死

  8. idea 的Tomcat 的简单配置

    不限速网盘下载: https://kohler.lanzouv.com/iSSfc0akw3vc 官网下载: https://tomcat.apache.org/download-80.cgi 正常解 ...

  9. 全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback

    全网最适合入门的面向对象编程教程:47 Python 函数方法与接口-回调函数 Callback 摘要: 回调函数是编程中一种非常常见的模式,用于将函数作为参数传递给其他函数或方法.这种模式在 Pyt ...

  10. Nuxt Kit 的使用指南:从加载到构建

    title: Nuxt Kit 的使用指南:从加载到构建 date: 2024/9/12 updated: 2024/9/12 author: cmdragon excerpt: 摘要:本文详细介绍了 ...