『贴代码』
PasteSpider
PasteApeart
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
案例分享,使用PasteApeart实现地区勾选功能
将妓就计 2025-09-06 170 1 3
地区选择,在商场系统中非常常见,比如不包邮地区,那些地区加邮费,加件加邮费等,一起来看看PpasteForm是如何处理这个问题的!

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

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

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

需求分析

地区模块可以说很常见,也不太常见,如果是商城系统,这一块就免不了的!
首先要知道地区是有层级概念的,比如省-市-区等
1.如果勾选了省的,包含对应的市,甚至是区等,也就是向下包含

2.如果勾选的时候选择了市,然后又勾选了他的上级省,则这个市应该取消勾选,基于1
3.需要支持编辑和新增,也就是编辑的时候,需要能直接显示之前的选择

效果展示

我们以邮费模板为例
图片alt
点击编辑看看
图片alt

如果有多条规则,我们还可以点击添加
图片alt

预览详细

上面是配置一条邮费模板,看下详细的时候是咋样的
图片alt

Dto配置

看到上面的功能,有点多,一起来看看Dto中是如何配置特性的

    ///<summary>
    ///邮费模板
    ///</summary>
    [Description("邮费模板")]
    public class PostModelAddDto
    {

        ///<summary>
        ///名称 示例:三角区包邮
        ///</summary>
        [MaxLength(16)]
        [Required]
        [PasteMark("post", "name")]
        [Description("名称 示例:三角区包邮")]
        public string Name { get; set; }

        /// <summary>
        /// 说明 示例:三角区包邮,其他地区8元,偏远12元
        /// </summary>
        [MaxLength(512)]
        [Description("说明 示例:三角区包邮,其他地区8元,偏远12元")]
        public string AreaMark { get; set; } = "";

        ///<summary>
        ///排序 排序大的权重比较高,命中后终止
        ///</summary>
        [Description("排序 排序大的权重比较高,命中后终止")]
        public int Sort { get; set; }

        ///<summary>
        ///状态
        ///</summary>
        [Description("状态")]
        public bool IsEnable { get; set; } = true;

        /// <summary>
        /// 邮费规则
        /// </summary>
        [Description("邮费规则")]
        [PasteDirectsun]
        [PasteMark("post", "route")]
        public List<PostModelItemAddDto> Models { get; set; } = new List<PostModelItemAddDto>() { new PostModelItemAddDto { } };
    }

上面主要看邮费规则这个字段,注意PasteDirectsun有一个特性,如果当前字段有注释(title),后面版本改成从特性Description读取了,则在UI中会以分组的形式展示,否则就以默认字段的模式显示!
只有分组模式显示,你才可以添加更多(list一般是这种模式)!

再来看看地区和相关配置的Dto配置

    /// <summary>
    /// 
    /// </summary>
    public class PostModelItemBase
    {

        /// <summary>
        /// 名称 示例:偏远地区加邮费 最大32字符
        /// </summary>
        [MaxLength(32)]
        [PasteRequired]
        [PasteMark("post","itemname")]
        [Description("名称 示例:偏远地区加邮费")]
        public string Name { get; set; } = "";

        ///<summary>
        ///基础件数 表示多少件内
        ///</summary>
        [Description("基础件数 表示多少件内")]
        [PasteMark]
        public int FirstNumber { get; set; }

        ///<summary>
        ///基础邮费 基础件数内多少钱
        ///</summary>
        [PasteFenToYuan]
        [Description("基础邮费 基础件数内多少钱")]
        [PasteMark]
        public int BasicPrice { get; set; }

        ///<summary>
        ///增量数量 
        ///</summary>
        [Description("增量数量")]
        [PasteMark]
        public int AddSliceNum { get; set; }

        ///<summary>
        ///增量的邮费
        ///</summary>
        [PasteFenToYuan]
        [Description("增量的邮费")]
        [PasteMark]
        public int AddSlicePrice { get; set; }


    }


    ///<summary>
    ///
    ///</summary>
    public class PostModelItemAddDto : PostModelItemBase
    {


        /// <summary>
        /// 地区
        /// </summary>
        [PasteSunform("./area/index.html?atype=code", 420)]
        [PasteSort(10)]
        [Description("地区")]
        public List<AddressShort> address_infos { get; set; }

    }

上面关键在于PasteSunform,表示引入一个页面,这个页面是非PasteApeart的,也就是需要自行实现!

上面已经是数据格式了,我们一起来看看编辑的时候,返回的数据格式是咋样的

编辑格式

对于PasteDirectsun特性,在信息上返回的一般是拆解后的格式,
比如
图片alt
注意看PasteDirectsun的内项addressinfos,这个返回是一个obj,也就是自定义页面中,系统会传入一个obj,实际前端获得信息后,会写入一个session本次存储,然后会给配置的页面一个session_key,用于读取这个缓存的信息!
对于PasteDirectsun则是会解析成\
_划分的多层级格式
比如上面的models__0__id,起始表示的就是第一个list的id字段!

area页面

对于地区选择等,你只要在pasteform文件夹下,找一下area这个文件夹就是了!

评论列表
将妓就计
1 170 3
快捷注册
用户问答更多
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