『贴代码』
技术分享
精选作品
优选问答
成长笔记
案例分享,如果使用PasteForm实现商品的货品编辑模块
轻寒暮雪何相随 2025-08-24 17 1 0
一起来看看,PasteForm是否可以应对复杂的业务需求,比如一个很常用的功能,商城商品中的货品编辑,比如某一个商品,有颜色,大小等规格,你只需要2行代码即可实现!

更多特性PasteForm的介绍,请前往PasteForm操作文档查看 PasteForm操作文档与介绍


需求说明

做过商城的都知道一个东西,那就是商品,商品的编辑比较有逻辑的就是货品了
比如你卖桌子,获取有以下规格
长度:100cm/80cm/120cm
材质:不锈钢/实木/玻璃
或许还有更多规格
我们把上面的 长度/材质 成为规格
对应的值就是规格值

效果预览

如果我们把上面的规格和对应的值实现后,则有大概如下图的效果
图片alt
上面的就是编辑区域
下面的则是基于你得输入生成的货品列表
图片alt
可以看到,2个规格,各3个规格值的时候,组合的货品有9种!!!

代码实现

要实现这样的,那么使用PasteForm要如何标注特性呢?

 /// <summary>
 /// 商品
 /// </summary>
 [Description("商品")]
 public class ProductInfoAddDto
 {

     ///<summary>
     ///标题
     ///</summary>
     [MaxLength(128)]
     [Required]
     [Description("标题")]
     public string Title { get; set; }

     ///<summary>
     ///描述
     ///</summary>
     [MaxLength(256)]
     [Description("描述")]
     public string Desc { get; set; }

    //省略其他字段信息

     /// <summary>
     /// 货品信息
     /// </summary>
     [PasteSunform("../sku/index.html", 500)]
     [Description("货品信息")]
     public SkuBodyModel SkuInfo { get; set; }


 }

看到了把,有一个属性SkuInfo
类型是SkuBodyModel
还有一个关键点,标记的特性是
[PasteSunform]

先看看SkuBodyModel是啥内容

    /// <summary>
    /// 
    /// </summary>
    public class SkuBodyModel
    {

        /// <summary>
        /// 规格信息
        /// </summary>
        public ICollection<SkuFormat> skuFormatBody { get; set; }

        /// <summary>
        /// 货品规格
        /// </summary>
        public ICollection<SkuItemModel> skus { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class SkuFormat
    {
        /// <summary>
        /// 规格
        /// </summary>
        public string privateSpecName { get; set; }

        /// <summary>
        /// 规格值
        /// </summary>
        public string[] dynamicTags { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    public class SkuItemModel
    {
        /// <summary>
        /// 
        /// </summary>
        public int sale_price { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string sku_code { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int sort { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public int stock_num { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string thumb_img { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public ICollection<SkuAttribute> sku_attrs { get; set; }

        /// <summary>
        /// 存放计算的SKUID
        /// </summary>
        public long extend_sku_id { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class SkuAttribute
    {
        /// <summary>
        /// 规格
        /// </summary>
        public string attr_key { get; set; }

        /// <summary>
        /// 规格值
        /// </summary>
        public string attr_value { get; set; }
    }

可以看到,这些信息我并没有标记特性等
那是因为这些信息不作为PasteForm的基本字段处理,关键在于上面的页面
PasteSunform的../sku/index.html
也就是说,这些数据格式和数据类型是给这个../sku/index.html页面使用的

新增商品

只要按照上面的配置,其实我们都知道,新建的时候这个sku是null的
所以不会带入啥数据,
按照上图的填写后,我们一起来看看,新增的时候提交的数据是怎么样的
图片alt
关键信息看上面的skuInfo
我们看到了,提交给数据库的时候是一个Obj对象,其实就是我们定义的
SkuBodyModel
所以呢,API端要基于获得的信息,进行整理入库!

编辑商品

编辑商品,有2个步骤
第一步,就是数据库的数据整理成UI可以接收的类型
第二部,就是显示数据
图片alt
可以看到,API返回的skuInfo信息,和提交的时候的格式是一致的
注意,也需要对应的PasteSunform特性
然后在UI上可以看到
图片alt
是符合预期的!

实现原理

上面的步骤中,对于UI来说,几乎没有要修改的地方,如果你要长的不太一样,你直接修改sku/index.html页面的代码即可
对于API端来说,就是新增,编辑,读取编辑的数据的处理,关键是要从数据库类型整理成UI的类型!
这是一个前后端协商的过程和结果!

如何渲染的?

其实PasteSunform是一个iframe
在主页面接收到这个对象后,会把值写入到session缓存中,传递一个缓存key给这个Iframe
iframe页面显示后,基于key读取内容,然后进行渲染
然后实现window.funcSubjectForm();
主要是这个函数会被主页面调用
所以sku/index.html页面需要处理这个函数,或者说实现这个函数
window.funcSubjectForm();

如何接入到我的项目

拉取最新的PasteForm项目源码,你可以在wwwroot/page/sku/文件夹看到sku的实现
你可以直接用,或者自行修改,都行!

结语

那么SKU的编辑和新增就说到这了,我们下次来分享下,如何在小程序上实现SKU的选择功能
就是类似商城的,购物的时候选择规格的功能!

评论列表
轻寒暮雪何相随
1 17 0
快捷注册
热门推荐更多
PasteBuilder
;
用户问答更多
07月份版本的内存占用比以前大了,也没有泄漏,啥情况?以前200MB,这个版本能到300MB
文档中的组织归属有些问题,啥时候看看,更新更新!
  • 已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!

PasteSpider的集群方式,我还是没太懂,啥时候出一个专题来讲解讲解?
  • b不难吧,就几个地址!

最新动态
  • 113.****.44 正在查看 在Docker中安装postgresql数据库! !
  • 216.****.99 正在查看 文章列表页 !
  • 8.****.5 正在查看 Document:spider !
  • 121.****.69 正在查看 免费SSL证书,自动续期配置,配合PasteSpider的路由策略,用得飞起 !
  • 180.****.250 正在查看 主页spider !
  • 94.****.213 正在查看 文章列表页 !
  • 162.****.32 正在查看 主页spider !
  • 94.****.198 正在查看 PasteSpider部署工具介绍,为啥说是开发专属部署工具,看这篇就够了! !
  • 147.****.242 正在查看 主页spider !
  • 113.****.1 正在查看 主页talk !
  • 122.****.171 正在查看 项目列表页 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2