作弊的网站,深圳网站公司制作,约么同城实时定位搜索引擎,做58网站每天可以发几条简介
PasteForm是贴代码推出的 “新一代CRUD” #xff0c;基于ABPvNext#xff0c;目的是通过对Dto的特性的标注#xff0c;从而实现管理端的统一UI#xff0c;借助于配套的PasteBuilder代码生成器#xff0c;你可以快速的为自己的项目构建后台管理端#xff01;目前管…简介
PasteForm是贴代码推出的 “新一代CRUD” 基于ABPvNext目的是通过对Dto的特性的标注从而实现管理端的统一UI借助于配套的PasteBuilder代码生成器你可以快速的为自己的项目构建后台管理端目前管理端只有Htmljs版本的后续将支持小程序Vue等
案例源码
案例源码在
https://gitee.com/pastecode/paste-template不定期升级
AllInDto!
通过引入PasteForm一个项目哪怕100个数据表一般的管理页面也才不到10个除非有非常多的特殊功能否则都能用PasteForm中的表格和表单来实现 本次的特性介绍涉及的东西会多一些你可以下载源码后看看详细的我们先来查看下各个特性的信息
outer
表示一个值需要从外表获取编辑的时候如何显示? 比如fatherId,extendRole
字段类型示例说明args1字符cateInfo外表的名称对应模板的path,或者路径路径一定附带了/字符示例./abc.htmlargs2字符extendCates表示显示的数据需要和下面2个配合是一个当前的扩展目标数组要配置hiddenargs3字符id获取返回对象的属性一般为idargs4字符nameid的友好名称显示,这里指的是外表比如cateId需要打开catelist页面选择后返回cate,则name作为友好显示,id作为实际值
outers
outer的复数版本表示可以从外部列表中选择多个比如在创建账号的时候给他绑定多个角色就用这个
字段类型示例说明args1字符cateInfo外表的名称对应模板的path,或者路径路径一定附带了/字符示例./abc.htmlargs2字符extendCates表示显示的数据需要和下面2个配合是一个数组目标数组要配置hiddenargs3字符id获取返回对象的属性一般为idargs4字符nameid的友好名称显示,这里指的是外表比如cateId需要打开catelist页面选择后返回cate,则name作为友好显示,id作为实际值
outerdisplay
ListDto中用于外表的显示比如有字段cateInfoId,对应的ExtendCateInfo要标记为outerdisplay,args2配置为extendCateInfo?.name || ‘’,否则会显示为[object object]
字段类型示例说明args1字符cateInfoId表示这个字段的值一般不显示args2字符extendCateInfo?.name表示显示的名称友好名称需要后端支持,在前端会处理成.displayargs3字符name表示显示的字段
object
适用于表单页面表示从另外一个表单新增数据比如用户的收货地址在表单的时候打开一个新的表单进行信息填写后返回一个obj这个时候是没有写入数据库的,所以在返回的时候需要显示 和outer有点像不过回传的是一个object类型如果是编辑的时候需不需要上传到API表示编辑了?打开表单的时候会传递modelobject这个参数过去表示叫子表单不要做API入库操作 引入session_key作为信息传递使用本地存储进行过手!
注意这个子模型也是需要建立对应的API的不过不需要建立新增和编辑的接口因为被上一级涵盖了
字段类型示例说明args1字符roleInfo一般使用path也可以使用页面的路径args2字符id新增的时候无用主要是编辑的时候基于这个id和path去数据库查询新的数据args3字符name表示显示的是这个object的哪个字段一般在编辑的时候可见
objects
object的复数版本表示一个集合比如一个会员有多个爱好新增的时候打开子表单填写多个爱好的object信息体返回,在显示的时候如果一个字段不足以显示???是否支持多个字段联动显示?
字段类型示例说明args1字符roleInfo一般使用path也可以使用页面的路径args2字符id新增的时候无效编辑的时候表示从数据库查询信息也作为删除的key使用args3字符name表示显示的是这个object的哪个字段一般在编辑的时候可见
UI
我们先来看下效果图 上图是结果看作图和有图的内容其实是对应的在点击后面的标记特性为object和objects的时候会打开新的页面如下图 而如果点击的是outer,outers特性的字段则如下图 其实他们的区别就是outer是表示从现有的数据库中获取某条数据作为当前数据的外表比如你要获得角色ID 而object,objects表示的是获取一个object对象不一定有id,是直接从现成的form中获取
Dto /// summary/// object outer 案例/// /summarypublic class ObjectDto{///summary///姓名 模拟短文本输入////summary[MaxLength(32)][Required]public string Name { get; set; }///summary///文本区域 模拟文本区域的输入////summary[MaxLength(128)]public string Desc { get; set; }///summary///文本区域 长度大于128则自动为textarea////summary[MaxLength(256)]public string Text { get; set; }/// summary/// 角色/// /summary[PasteOuter(gradeInfo,extendGrade,id,name)]public int GradeId { get; set; }/// summary/// 角色/// /summary[ColumnDataType(outers,gradeInfo, extendGrade, id, name)]public int[] grade_ids { get; set; }/// summary/// 角色的扩展信息编辑的时候显示用/// /summary[PasteHidden]public GradeShortModel ExtendGrade { get; set; }/// summary/// 外表时间/// /summary[PasteObject(mod1,,id,name)]public Model1 date2 { get; set; }/// summary/// 外表字符/// /summary[ColumnDataType(objects,mod2, id, mark, )]public Model2[] str2 { get; set; }}/// summary/// /// /summarypublic class Model1{/// summary/// ID 这个用于排重/// /summarypublic int Id { get; set; }/// summary/// 名称 这个用于显示到UI/// /summary[MaxLength(32)]public string Name { get; set; }}/// summary/// /// /summarypublic class Model2{/// summary/// ID 这个用于排重/// /summarypublic int Id { get; set; }/// summary/// 名称 这个用于显示到UI/// /summary[MaxLength(32)]public string Mark { get; set; }/// summary/// 描述/// /summary[MaxLength(64)]public string Desc { get; set; }}也就是object的时候是读取的对应的Model1,Model2的信息其实也是通过PasteForm的逻辑实现的我们看下对应的API接口
API /// summary/// outer outers object objects/// /summary/// returns/returns[HttpGet][Route(/api/app/obj/readAddModel)]public PasteBuilderHelper.VoloModelInfo ReadAddModel4(){var _model PasteBuilderHelper.ReadModelPropertyObjectDto(new ObjectDto());return _model;}/// summary/// object的外援/// /summary/// returns/returns[HttpGet][Route(/api/app/mod1/readAddModel)]public PasteBuilderHelper.VoloModelInfo ReadAddModel5(){var _model PasteBuilderHelper.ReadModelPropertyModel1(new Model1());return _model;}/// summary/// object的外援/// /summary/// returns/returns[HttpGet][Route(/api/app/mod2/readAddModel)]public PasteBuilderHelper.VoloModelInfo ReadAddModel6(){var _model PasteBuilderHelper.ReadModelPropertyModel2(new Model2());return _model;}PasteForm路径规则
说到上面不得不说路径规则 在PasteForm中默认API有这么几个 /api/app/xxx/readAddModel/api/app/xxx/readUpdateModel/api/app/xxx/readListModel/api/app/xxx/item/api/app/xxx/updateItem
其中/app/一般一个项目配置一个默认是app 可以在下面地方配置 context.Services.ConfigureVolo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcOptions(options {options.ConventionalControllers.Create(typeof(PasteTemplateApplicationModule).Assembly, option {option.UseV3UrlStyle true;option.RootPath app;});});也就是说如果一个字段配置为object,objects则他对应的类型应该就有一个对应的API比如上面的 /api/app/mod2/readAddModel
更多特性见
贴代码PasteForm专题介绍
我们下期见!