简介
PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等
案例源码
案例源码在
https://gitee.com/pastecode/paste-template
 
不定期升级
AllInDto!
通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!

本次的特性介绍,涉及的东西会多一些,你可以下载源码后,看看详细的,我们先来查看下各个特性的信息
需求说明
作为贴代码(https://soft.pastecode.cn/)官方主推的框架PasteForm,不仅配套了项目模板,还提供了PasteBuilder代码生成器,今日要介绍的是提供的另外一个帮助函数PasteFormHelper,主要的作用就是标记特性和反序列化Dto用!
如何引入
dotnet add package PasteFormHelper --version 24.11.8
 
应该是要把这个包添加到XXX.Application.Contracts子项目中!
PasteFormHelper内容

 如上图所示,PasteBuilderHelper里面主要就是解析Dto的文档和特性使用的!
 下方的特性列表主要是为了减少输入错误!
API案例
比如项目模板中的UserInfo
 
注意事宜
使用PasteFormHelper需要符合一些条件
框架
需要使用贴代码提供的框架,或者是ABPvNext的,大概如下
 
 如上图,需要有这5个子项目,缺少其中某一个也是可以的
存放规范
表对应的数据Model存放于某一个文件夹下,比如XXXDomain.usersmodels/xxx.cs
 
枚举类支持
枚举类的对象要存放于XXX.Domain子项目或者XXX.Application.Contracts子项目中,否则枚举的注释读取不了

数据继承层级
查看最新的代码,层级不能超过6层,且除了基本类型,其他的都应该在当前项目中,比如你可以这么写
 XXXDto:XXXListDto:XXXShort
        /// <summary>
        /// 递归读取文档
        /// </summary>
        /// <param name="_classType"></param>
        /// <param name="_property"></param>
        /// <param name="xmlDoc"></param>
        /// <param name="_cpro"></param>
        /// <param name="_index"></param>
        private static void ReadSummary(Type _classType, PropertyInfo _property, XDocument xmlDoc, VoloModelProperty _cpro, int _index = 0)
        {
            var _pro_full = $"P:{_classType.FullName}.{_property.Name}";
            //Console.WriteLine(_pro_full);
            XElement typeElement = xmlDoc.Descendants("member").FirstOrDefault(member => member.Attribute("name")?.Value == _pro_full);
            if (typeElement != null)
            {
                var _summary = typeElement.Element("summary")?.Value;
                if (!String.IsNullOrEmpty(_summary))
                {
                    _summary = _summary.Replace("\r\n", "").Trim();
                    _cpro.Summary = _summary;
                }
            }
            else
            {
                if (_property.DeclaringType != null && _index < 6)
                {
                    var _declartype = _property.DeclaringType;
                    if (_declartype.FullName != _classType.FullName)
                    {
                        var _zindex = _index++;
                        ReadSummary(_declartype, _property, xmlDoc, _cpro, _zindex);
                    }
                }
            }
        }
 
更多特性见
贴代码PasteForm专题介绍
我们下期见!


















