前言

后端通过对不同数据模型Dto进行特性处理,达到管控管理端页面的目的!

为此框架的顺序使用,贴代码还引入了

1.PasteDemo,项目案例,实际代码演示PaseteForm的各种用法等

2.PasteBuilder,代码生成器,针对PasteForm做了些优化,主要在生成Dto的特性的标注上

3.PasteTemplate,项目模板,基于当前模板可以快速的创建你的项目,减少一些脚手架的搭建工作!

4.PasteSpdier,支持Linux和Windows平台的服务器部署工具,可以使你的服务快速的部署到不同服务器上!


你可以下载PasteForm的案例项目到本地看看他是如何运行的

PasteForm案例项目,点我下载

超级管理员
案例

表单页

先看PasteTemplate里面的案例表TestTable
图片alt

图片alt

看看代码模块

    ///<summary>
    ///测试表 用于测试CURD的表
    ///</summary>
    [PasteGroup("gra", "基础信息", true)]
    [PasteGroup("grb", "其他", true)]
    [PasteGroup("grc", "附加配置", false)]
    public class TestTableAddDto
    {
        ///<summary>
        ///姓名 模拟短文本输入
        ///</summary>
        [MaxLength(32)]
        [Required]
        [PasteMark("test", "name")]
        public string Name { get; set; }

        ///<summary>
        ///年龄 模拟输入number
        ///</summary>
        [Range(5, 90, ErrorMessage = "年龄必须限定在5~90之间!")]
        [ColumnDataType("unit", "岁")]
        [PasteGroupItem("gra")]
        public int Age { get; set; }

        ///<summary>
        ///头像 模拟图片上传
        ///</summary>
        [MaxLength(128)]
        [PasteMark("test", "head")]
        [ColumnDataType("image", "1", "head", "60*60")]
        public string Head { get; set; }

        ///<summary>
        ///文本区域 模拟文本区域的输入
        ///</summary>
        [MaxLength(128)]
        [PasteGroupItem("grb")]
        public string Desc { get; set; }

        /// <summary>
        /// 评分
        /// </summary>
        [ColumnDataType("score", "1", "5")]
        [PasteGroupItem("grb")]
        public int Rate { get; set; } = 2;

        ///<summary>
        ///加入日期 模拟必填时间的输入
        ///</summary>
        [PasteGroupItem("gra")]
        public DateTime JoinDate { get; set; }

        /// <summary>
        /// 文件
        /// </summary>
        [ColumnDataType("file", "/api/app/Upload/UpFile?type=file")]
        public string Fpath { get; set; } = "";

        ///<summary>
        ///单选 一般表示状态,内定的,有点像Enum,关于Enum后续会支持
        ///</summary>
        [ColumnDataType("mark", "test", "datetype")]
        [ColumnDataType("select", "[{\"name\":\"日类型\",\"value\":0},{\"name\":\"月类型\",\"value\":1},{\"name\":\"年类型\",\"value\":2}]")]
        public int DateType { get; set; }

        /// <summary>
        /// 复选 多个之间用逗号隔开
        /// </summary>
        [ColumnDataType("selects", "[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]", ",")]
        public string TypeStrs { get; set; }

        /// <summary>
        /// 复选数组
        /// </summary>
        [ColumnDataType("selects", "[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]")]
        public string[] Types { get; set; }

        ///<summary>
        ///角色ID 这里一般用于外表,就是选择其他表的一个数据作为输入内容
        ///</summary>
        [ColumnDataType("outer", "gradeInfo", "", "id", "name")]
        [PasteGroupItem("grb")]
        public int GradeId { get; set; }

        ///<summary>
        ///成绩 模拟前端限定2位小数
        ///</summary>
        [ColumnDataType("unit", "分")]
        public double Score { get; set; }

        /// <summary>
        /// 多图 回传的值是多个的,使用,隔开
        /// </summary>
        [ColumnDataType("image", "3", "img", "60*60")]
        [PasteGroupItem("grb")]
        public string Img2 { get; set; }

        /// <summary>
        /// 图片 回传的使用string[]的模式
        /// </summary>
        [ColumnDataType("image", "3", "img", "60*60")]
        [PasteGroupItem("grb")]
        public string[] Img3 { get; set; }

        /// <summary>
        /// 会员周期 会员生效区间
        /// </summary>
        [ColumnDataType("daterange", "dateStart", "dateEnd")]
        public DateTime DateStart { get; set; } = DateTime.Parse("2024-09-01 00:00:00");

        /// <summary>
        /// 会员周期 会员生效区间
        /// </summary>
        [ColumnDataType("hidden")]
        public DateTime DateEnd { get; set; } = DateTime.Parse("2024-10-01 00:00:00");

        ///<summary>
        ///用户 外部创建用户
        ///</summary>
        [ColumnDataType("object", "gradeInfo", "", "id", "name")]
        public Object Create { get; set; } = new GradeInfoAddDto { Name = "默认值" };

        /// <summary>
        /// 年龄 多个之间使用,隔开
        /// </summary>
        [ColumnDataType("splitarray")]
        [PasteGroupItem("grc")]
        public int[] Ages { get; set; }

        /// <summary>
        /// 分类 多个之间使用,隔开
        /// </summary>
        [ColumnDataType("splitarray")]
        public int[] Tabs { get; set; } = new int[] { 1, 2, 5 };

        /// <summary>
        /// 曾用名 多个之间使用,隔开
        /// </summary>
        [ColumnDataType("splitarray")]
        [PasteGroupItem("grc")]
        public string[] Names { get; set; }

        /////<summary>
        /////富文本 模拟富文本,前端HTML的是使用wangEditv5
        /////</summary>
        //public string Blog { get; set; }

        /// <summary>
        /// 动作类型
        /// </summary>
        public ActionEnum ActionType { get; set; }

        /// <summary>
        /// M1
        /// </summary>
        [ColumnDataType("empty")]
        [PasteSingleRow]
        public int Menu1 { get; set; }

        /// <summary>
        /// M2
        /// </summary>
        public int Menu2 { get; set; }

        /// <summary>
        /// M3
        /// </summary>
        public int Menu3 { get; set; }

        /// <summary>
        /// M4
        /// </summary>
        [ColumnDataType("empty")]
        public int Menu4 { get; set; }

        /// <summary>
        /// M5
        /// </summary>
        public int Menu5 { get; set; }

        /// <summary>
        /// M6
        /// </summary>
        public int Menu6 { get; set; }

    }

表格页

图片alt
对应的代码为

    ///<summary>
    ///测试表 用于测试CURD的表
    ///</summary>
    [PasteBatch("批量启用", "global_bitch_state(this,1)")]
    [PasteBatch("批量禁用", "global_bitch_state(this,0)")]
    //[ColumnDataType("button","新增新增","open_window('新增','./view.html?path=xxx')","add")]
    public class TestTableListDto : EntityDto<int>
    {
        ///<summary>
        ///姓名 模拟短文本输入
        ///</summary>
        public string Name { get; set; }

        ///<summary>
        ///头像 模拟图片上传
        ///</summary>
        [ColumnDataType("image")]
        public string Head { get; set; }

        ///<summary>
        ///年龄 模拟输入number
        ///</summary>
        [PasteUnit("岁")]
        [PasteMark]
        public int Age { get; set; }

        ///<summary>
        ///文本区域 模拟文本区域的输入
        ///</summary>
        [ColumnDataType("class", "fleft")]
        [PasteMark]
        public string Desc { get; set; }

        ///<summary>
        ///富文本 模拟富文本,前端HTML的是使用wangEditv5
        ///</summary>
        public string Blog { get; set; }

        ///<summary>
        ///加入日期 模拟必填时间的输入
        ///</summary>
        public DateTime JoinDate { get; set; }

        ///<summary>
        ///更新日期 模拟非必填的时间输入
        ///</summary>
        [ColumnDataType("hidden")]
        public DateTime? UpdateDate { get; set; }

        /////<summary>
        /////单选 一般表示状态,内定的,有点像Enum,关于Enum后续会支持
        /////</summary>
        //[ColumnDataType("html", "<div>{{:=item.dateType}}-{{:=item.gradeId}}</div>")]
        //public int DateType { get; set; }

        /// <summary>
        /// 类型隐藏
        /// </summary>
        [PasteHidden]
        [ColumnDataType("select", "[{\"name\":\"日类型\",\"value\":0},{\"name\":\"月类型\",\"value\":1},{\"name\":\"年类型\",\"value\":2}]")]
        public int DateType { get; set; }

        /// <summary>
        /// 类型显示
        /// </summary>
        [ColumnDataType("html", "<div class=\"dtype{{:=item.dateTypeInt}}\">{{:=item.dateType}}-{{:=item.dateType}}</div>")]
        public int DateTypeInt { get { return DateType; } }

        ///<summary>
        ///角色ID 这里一般用于外表,就是选择其他表的一个数据作为输入内容
        ///</summary>
        [ColumnDataType("hidden")]
        public int GradeId { get; set; }

        ///<summary>
        ///成绩 模拟前端限定2位小数
        ///</summary>
        [ColumnDataType("fentoyuan")]
        [PastePrefix("+")]
        [PasteUnit("分")]
        public double Score { get; set; }

        /// <summary>
        /// 普通菜单
        /// </summary>
        [ColumnDataType("menu", "菜单一", "open_window('查阅用户带参','./index.html?path=userInfo&xxid={{:=item.id}}');", "Hui-iconfont-menu")]
        public string Menu2 { get; set; }

        /// <summary>
        /// 普通条件菜单
        /// </summary>
        [ColumnDataType("ifmenu", "item.age==7", "<a href=\"javascript:;\" onclick=\"open_window(`111`,`./index.html?path=userInfo&goid={{:=item.id}}`)\">条件1</a>", "")]
        public string Menu3 { get; set; }

        /// <summary>
        /// 菜单盒子菜单
        /// </summary>
        [ColumnDataType("menu", "菜单二", "open_window('查阅用户带参','./index.html?path=userInfo&xxid={{:=item.id}}');", "Hui-iconfont-menu", "box")]
        public string Menu5 { get; set; }

        /// <summary>
        /// 菜单盒子中的条件菜单
        /// </summary>
        [ColumnDataType("ifmenu", "item.age==8", "<a href=\"javascript:;\" onclick=\"open_window(`222`,`./index.html?path=userInfo&goid={{:=item.id}}`)\">条件2</a>", "box")]
        public string Menu4 { get; set; }

        /// <summary>
        /// 详细
        /// </summary>
        [ColumnDataType("menu", "详细", "open_window('查看{{:=item.id}}详细','./detail.html?path=testTable&id={{:=item.id}}');", "Hui-iconfont-menu")]
        public string Menu6 { get; set; }

    }
超级管理员
立即前往参与当前项目管理 前言 案例
贴代码框架
贴代码框架PasteForm的在线文档,主要介绍理念和特性及实际案例!
贴代码文档
什么才叫操作文档?对于操作人员来说,遇到哪个字段不懂意思,点击下即可查阅说明,这就是最好的文档!
PasteSpider在线操作文档
PasteSpider是专门为开发者开发的部署工具,五分钟上手,小内存服务器也可以使用,使用旁载模式,运行更安全!!!目前仅支持linux的服务器,win服务器的版本将在不久到来!
贴代码在线客服文档
是客服系统也是营销系统,支持丰富的话术配置,支持自定义消息格式,支持多站点入驻模式,一键部署快速搭建!