『贴代码』
PasteSpider
PasteApeart
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
框架PasteApeart实际开发案例,支持多级对象的表单看看有多简单只要几个特性即可!(1)
尘埃 2025-04-05 1970 86 4
你知道么,包含多层级对象的表单在PasteApeart中是这么的简单,只需要一个特性即可!

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

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

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

PasteApeart框架的主要思想就是对Dto进行标记特性,然后管理端的页面就会以不一样的UI呈现
使用PasteApeart框架开发,让你免去开发管理端的烦恼,你只需要专注于业务端和用户端!

今天来分享的主要有以下几个点
1.多级嵌套,也可以说是外表或者是子表集合模式
2.按需显示,比如某一个选项选择a的时候,哪些要输入,选择b的时候又是哪些要输入

带子页面和可选输入的UI

先看UI
在这里插入图片描述
如果我选择条件包邮,则变成下面的
在这里插入图片描述
注意看上图的条件包邮,后面又新增+ 删除 收缩的操作,也就是可以以当前为范本新增一个对象的!
思考下,看UI可以知道条件包邮是下一级的东西,然后地区选择应该是一个array对吧,一起看看Dto长啥模样

Dto

    ///<summary>
    ///运费模板
    ///</summary>
    public class TemplateInfoAddDto
    {
        ///<summary>
        ///模板名称
        ///</summary>
        [MaxLength(64)]
        [Required]
        public string name { get; set; }

        ///<summary>
        ///计费类型
        ///</summary>
        [MaxLength(8)]
        [PasteLselect(PasteApeartString.SelectValuationType, "", 1)]
        public string valuation_type { get; set; } = "PIECE";

        ///<summary>
        ///发货期限 SendTime_TWENTYFOUR_HOUR SendTime_FOUTYEIGHT_HOUR
        ///</summary>
        [MaxLength(32)]
        [PasteLselect(PasteApeartString.SelectSendTime, "", 1)]
        public string send_time { get; set; } = "SendTime_TWENTYFOUR_HOUR";

        ///<summary>
        ///运输方式 EXPRESS:快递
        ///</summary>
        [MaxLength(16)]
        [PasteSelect(PasteApeartString.SelectDeliveryType)]
        public string delivery_type { get; set; } = "EXPRESS";

        ///<summary>
        ///计费方式
        ///</summary>
        [MaxLength(16)]
        [PasteLselect(PasteApeartString.SelectShippingMethod, "", 1)]
        [ColumnDataType("changeui", "CONDITION_FREE", "group:regexp:condition_free_detail_list__(.*)", "")]
        [ColumnDataType("changeui", "NO_FREE", "group:regexp:freight_calc_method_list__(.*)", "")]
        public string shipping_method { get; set; } = "FREE";

        /////<summary>
        /////条件包邮
        /////</summary>
        //public string all_condition_free_detail_json { get; set; }

        /////<summary>
        /////条件包邮
        /////</summary>
        //[PasteDirectsun]
        //public AllConditionFreeDetail all_condition_free_detail { get; set; } = new AllConditionFreeDetail();

        /// <summary>
        /// 条件包邮
        /// </summary>
        [PasteDirectsun]
        [PasteHidden]
        public List<ConditionFreeDetail> condition_free_detail_list { get; set; } = new List<ConditionFreeDetail> { };

        /////<summary>
        /////计费方法 默认运费,指定地区运费等
        /////</summary>
        //public string all_freight_calc_method_json { get; set; }

        /////<summary>
        /////计费方法 默认运费,指定地区运费等
        /////</summary>
        //[PasteDirectsun]
        //public AllFreightCalcMethod all_freight_calc_method { get; set; } = new AllFreightCalcMethod();

        /// <summary>
        /// 计费方法
        /// </summary>
        [PasteDirectsun]
        [PasteHidden]
        public List<FreightCalcMethod> freight_calc_method_list { get; set; } = new List<FreightCalcMethod> { };

        /////<summary>
        /////不发货区域
        /////</summary>
        //public string not_send_area_json { get; set; }

        ///<summary>
        ///
        ///</summary>
        [PasteGroupItem("g_no_area", "不发货地区", false)]
        [PasteSunform("../area/index.html?datainfo=address_infos",420)]
        public List<AddressShort> not_send_area { get; set; }
    }

上面用到了几个特性,简单介绍下,如果你要了解具体的特性用法,可以查阅PasteApeart的操作文档
PasteApeart文档
应该说是说明文档比较贴切

lselect

这个是select的变种,以横向模式展示可选项,支持单选和多选模式,选中的为蓝色粗体模式

changeui

这个是最近添加的特性,表示基于当前字段的最新值,进行UI的显示隐藏操作,目前只支持在select或者lselect后面执行
选择条件包邮后的UI变动就是这个特性生效的!

directsun

表示的是以对象模式读取当前对象,一般用于非基础数据类型,比如上面的

        /// <summary>
        /// 计费方法
        /// </summary>
        [PasteDirectsun]
        [PasteHidden]
        public List<FreightCalcMethod> freight_calc_method_list { get; set; } = new List<FreightCalcMethod> { new FreightCalcMethod { } };

上面是一个集合List,所以在UI中会以组别形式呈现,还支持+和删除操作,注意初始化的时候要new一项,不然UI中没有数据的!
非List也是支持的,比如

        /// <summary>
        /// 计费方法
        /// </summary>
        [PasteDirectsun]
        public FreightCalcMethod freight_calc_method_list { get; set; }

sunform

这个就很有意思了,表示以iframe的形式载入一个页面,这个页面要实现一个函数

/**
 * 提交表单 提交表单的数据,最好前面加一层转化啥的
 **/
function funcSubmitForm() {
    //把当前页面的内容读取成obj或者array,具体看需求
}

这样就可以实现有些特别复杂的直接写一个个性化的页面来实现!

问题

目前遇到一个问题,看上面的,如果某一个UI中的字段等没有被显示,而特性又标记required的时候,这个时候肯定有问题的,因为提交的时候会被阻断了!(因为必填你没填)

首先使用:hidden(判断元素是否显示)是不行的,因为组别的展开和收缩也是这个

还有一个是表单项有层级关系的,比如组隐藏了,就包含他里面的所有表单项了

这个问题我估计会使用class的名称来判定,如果是多级套的问题,其实class也有问题的。。。

如果你有好的建议欢迎留言,我会很开心看到你的建议的

下期见

评论列表
贴代码
最新版本修复了之前的干扰问题
比如你这样配置
[PasteChangeui("1,2","path,role")]
[PasteChangeui("2,3","mark,level")]
[PasteChangeui("4,5","model")]
新版本采用的是综合统计,最后计算是现实还是隐藏!
之前版本只计算当前行,是有问题的!
尘埃
86 1970 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