当前位置: 首页 > news >正文

三明市建设局网站官网中小企业名录

三明市建设局网站官网,中小企业名录,江门企业模板建站,wordpress文章怎么输出作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服#xff01;下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有贴Builder(PasteSpide…作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有贴Builder(PasteSpider)和案例项目(PasteTemplate),其中案例项目你可以在 https://gitee.com/pastecode/paste-template 获得 PasteForm的CRUD模式有什么特色 搞这个的起初是因为我有一个项目要在小程序上行实现大量的表单思考了下一大堆相似的代码不是可以使用那个组件的方式实现么那就需要传入模型换位思考下那么我们经常使用的CRUD是否也可以这么搞 于是就有了这个利用多数据模型Dto和反射的原理实现的PasteForm主要优点如下 1.PasteForm输出的是一个思想就是管理端的页面由后端控制无论是安全性还是数据的表现 2.前端编写一次后后续都不用编写如果你使用的是我的案例项目那么你前端都可以不用编写包括后端要新增表修改字段等前端都不再需要修改代码 3.前端页面的超简洁性无论你的后端是30个表还是100个表对于前端来说都差不多大概4个页面搞定当然了一些特殊的需求还是需要编写下的 4.无语言限制上面说得输出的是一个思想本文的案例使用的是.netcorehtml的形式实现的你也可以使用比如javavue的模式 5.统一性比如你30个表的图片上传在表单中他们的样式都是一样的因为他们其实使用的是同一个管理端页面 6.后端统筹所有比如字段的显示顺序字段是否显示字段的默认值等等等都由后端对应的Dto来限制和控制比如同样的新增由于当前登陆用户的角色不同你可以限制某一个字段张三必填而李四可以是选填 看到管理端的代码感觉像JSP的? 整个PasteForm的原理就是后端把数据模型的属性字段等返回给前端前端基于后端返回的数据再渲染到UI上为了便于编写所以采用了template的模式其实不是JSP是长得像而已 我的项目拥有120个数据表那是不是要编写很多的后端文件? PasteForm原则上只有3个页面pasteform/index.html,pasteform/view.html,pasteform/detail.html只是有一些特殊情况下会添加一些页面这个要看你项目的实际需求其实无论多少个表PasteForm的页面都只是那么几个比如说权限的页面为pasteform/index.html?pathroleInfo而用户的表为pasteform/index.html?pathuserInfo,你会发觉其实他们是同一个页面只是参数path不一样而已这个path就是WebApi的Service 其实你完全可以一个页面都不写直接使用我提供的案例项目PasteTemplate中的pasteform的文件! 我看案例PasteTemplate项目是使用html,js,css编写的可以使用vue编写管理端么 上面提到的PasteForm主要输出的是一个思想也就是由后端的Dto控制前端的页面呈现和交互等所以从WebApi中请求得到模板得属性字段等信息后你可以使用其他语言实现管理端得页面得不限原生vue,angular等 pasteform/index.html是干嘛用 作为对应数据表得数据展示用一般为表格table呈现对应模型为XXXListDto也包括了搜索区域搜索区域由对应得InputQueryXXX的数据模型决定一般只有page,size,word三个字段当然了这个页面也包含了新增数据编辑详情删除等的操作交互 pasteform/view.html是做什么用得? 新增数据或者编辑数据的时候使用的都是这个页面不过他们读取的数据模型不一样比如权限这个表roleInfo,则有新增的时候为pasteform/view.html?pathroleInfo对应的数据模型为roleInfoAddDto,而在编辑的时候为pasteform/view.html?pathroleInfoid3,对应的数据模型为roleInfoUpdateDto。页面的整体逻辑就是从WebApi中获得对应模型后基于规则渲染到UI中包括默认值当前值等提交的时候再从页面中的form读取到值提交给后端所以说主要的控制还是在后端中 pasteform/detail.html是做什么用得? 有些时候我们的数据没办法在pasteform/index.html页面中显示完成比如文章列表主要是一些字段过长的这个时候我们希望有一个页面显示详细内容所以detail就是干这个用的对应的数据模型为XXXDto 我不会.netcore可以用其他语言写pasteform么 PasteForm输出的是一个思想所以使用其他语言也是可以的不过你得对着写一整套的就是了比如你可以使用vuejava的模式搞一套后端核心代码案例 /// summary/// 读取AddDto的数据模型/// /summary/// returns/returns[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments new object[] { root, root })]public PasteBuilderHelper.VoloModelInfo ReadAddModel(){var _model PasteBuilderHelper.ReadModelPropertyRoleInfoAddDto(new RoleInfoAddDto());return _model;}/// summary/// 读取UpdateDto的数据模型/// /summary/// returns/returns[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments new object[] { root, root })]public async TaskPasteBuilderHelper.VoloModelInfo ReadUpdateModel(int id){var _query from a in _dbContext.RoleInfojoin b in _dbContext.RoleInfo on a.FatherId equals b.Id into cfrom rol in c.DefaultIfEmpty()select new RoleInfoUpdateDto{Id a.Id,Desc a.Desc,FatherId a.FatherId,Icon a.Icon,IsEnable a.IsEnable,Model a.Model,Name a.Name,Path a.Path,Role a.Role,RoleType a.RoleType,Sort a.Sort,ExtendRole rol ! null ? new RoleShortModel{Id rol.Id,Model rol.Model,Name rol.Name,Path rol.Path,Role rol.Role,RoleType rol.RoleType} : null};var _info await _query.Where(x x.Id id).AsNoTracking().FirstOrDefaultAsync();if (_info null || _info default){throw new PasteCodeException(查询的信息不存在无法执行编辑操作);}var _dataModel PasteBuilderHelper.ReadModelPropertyRoleInfoUpdateDto(_info);return _dataModel;}/// summary/// 读取UpdateDto的数据模型/// /summary/// returns/returns[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments new object[] { root, root })]public async TaskPasteBuilderHelper.VoloModelInfo ReadDetailModel(int id){var _query from a in _dbContext.RoleInfojoin b in _dbContext.RoleInfo on a.FatherId equals b.Id into cfrom rol in c.DefaultIfEmpty()select new RoleInfoDto{Id a.Id,Desc a.Desc,FatherId a.FatherId,Icon a.Icon,IsEnable a.IsEnable,Model a.Model,Name a.Name,Path a.Path,Role a.Role,RoleType a.RoleType,SortStr a.SortStr,FatherStr a.FatherStr,Level a.Level,RootId a.RootId,Sort a.Sort,ExtendRole rol ! null ? new RoleShortModel{Id rol.Id,Model rol.Model,Name rol.Name,Path rol.Path,Role rol.Role,RoleType rol.RoleType} : null};var _info await _query.Where(x x.Id id).AsNoTracking().FirstOrDefaultAsync();if (_info null || _info default){throw new PasteCodeException(查询的信息不存在无法执行编辑操作);}var _dataModel PasteBuilderHelper.ReadModelPropertyRoleInfoDto(_info);return _dataModel;}/// summary/// 读取ListDto的数据模型/// /summary/// returns/returns[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments new object[] { root, root })]public PasteBuilderHelper.VoloModelInfo ReadListModel(){var _model PasteBuilderHelper.ReadModelPropertyRoleInfoListDto(new RoleInfoListDto());var _query_model PasteBuilderHelper.ReadModelProperty(new InputQueryRoleInfo());if (_query_model ! null){_model.QueryProperties _query_model.Properties;}return _model;} PasteForm使用到的各个模型是干嘛用的Dto 我最早接触Dto的时候是ABPvNext,说到这个Dto不得不说ObjectMapper,比如说权限表RoleInfo,则对应的有RoleInfoAddDto,RoleInfoUpdateDto,RoleInfoDto和RoleInfoListDto当前实际开发中你可能还会引申出更多的Dto,比如我常用的RoleMenuDto,RoleAuthDto等PasteForm中主要用到前面的4个一般还会附带一个InputQueryRoleInfo!比如说新增的时候用户提交的数据模型是RoleInfoAddDto,提交给API后API处数据校验合法后再使用AutoMapper把RoleInfoAddDto转化成RoleInfo然后写入到数据库 XXXAddDto:用于新增的时候的数据模型对应的是pasteform/view.html页面使用 XXXUpdateDto:用于数据编辑修改的数据模型对应的是pasteform/view.html页面使用 XXXDto:这里我一般用于显示详情的时候的数据模型也就是pasteform/detail.html的页面使用 XXXListDto:这里一般使用于数据表格展示的时候的数据模型也就是pasteform/index.html的页面使用 InputQueryXXX:这里一般用于表格上方的搜索项的数据模型也就是pasteform/index.html的搜索区域使用 如何上传图片? 图片分新增编辑和展示展示的话这里就是pasteform/index.html和pasteform/detail.html页面中了其实在编辑的时候pasteform/view.html页面上也有展示只要给对应字段添加属性[ColumnDataTypeAttribute(“image”,“1”,“image”,“60*60”)]即可 /// summary/// 多图 回传的值是多个的使用,隔开/// /summary[ColumnDataType(image, 3, img, 60*60)]public string Img2 { get; set; }/// summary/// 图片 回传的使用string[]的模式/// /summary[ColumnDataType(image, 3, img, 60*60)]public string[] Img3 { get; set; }表格中如何让数据左靠 ///summary///文本区域 模拟文本区域的输入////summary[ColumnDataType(class,fleft)]public string Desc { get; set; }表格中如何自定义显示 ///summary///单选 一般表示状态内定的有点像Enum,关于Enum后续会支持////summary[ColumnDataType(html, div{{:item.dateType}}-{{:item.gradeId}}/div)]public int DateType { get; set; }表格中如何显示按钮 /// summary/// 普通菜单/// /summary[ColumnDataType(menu, 菜单一, open_window(查阅用户带参,./index.html?pathuserInfoxxid{{:item.id}});, Hui-iconfont-menu)]public string Menu2 { get; set; }表格中如何显示条件按钮 有些时候我们需要基于当前行数据进行判断是否显示某一个按钮则有 /// summary/// 普通条件菜单/// /summary[ColumnDataType(ifmenu, item.age7, a href\javascript:;\ onclick\open_window(111,./index.html?pathuserInfogoid{{:item.id}})\条件1/a, )]public string Menu3 { get; set; }按钮太多如何使用按钮盒子 /// summary/// 菜单盒子菜单/// /summary[ColumnDataType(menu, 菜单二, open_window(查阅用户带参,./index.html?pathuserInfoxxid{{:item.id}});, Hui-iconfont-menu, box)]public string Menu5 { get; set; }/// summary/// 菜单盒子中的条件菜单/// /summary[ColumnDataType(ifmenu, item.age8, a href\javascript:;\ onclick\open_window(222,./index.html?pathuserInfogoid{{:item.id}})\条件2/a, box)]public string Menu4 { get; set; }按照排序查下某些字段支持升序降序 前端只是基于这个属性在查下的时候会回传orderby字段给后端后续需要基于回传的这个字段进行orderby查询 ///summary///排序////summary[ColumnDataType(orderby, Sort,Sort desc)]public int Sort { get; set; }— 未完待续下期继续 —
http://www.hkea.cn/news/14382806/

相关文章:

  • 十大黄金软件app免费系统优化
  • 网站建设与管理规划书网站翻页
  • 学校网站建设意义做网站公司法人还要拍照吗
  • 做鞋设备网站淘宝客必须做网站
  • centos wordpress 建站教程兰州网站维护公司
  • 灵犀科技网站开发佼佼者网站开发前端要学什么软件
  • 长春求推荐好的网站优化推广sdk软件开发工具包
  • 电子商务网站开发费用调研报告网站建设公司客户来源渠道
  • 自己设计的网站如何推广网站换域名做301会有影响
  • 国企门户网站建设方案网站建设轮播图
  • 电商网站里的水果图片怎么做的临沂建设局网站官网
  • 北京手机网站开发公司网络设计规划
  • 医院网站建设管理规范列举免费域名注册的网站
  • 网站需要怎么做的页面设计包括插画吗
  • 私人公司怎么做网站口碑好的网站设计制作价格
  • 金华网上商城网站建设网站设计大概流程
  • 网站首屏做多大网站的首页文案
  • 凯里信息网站中铁建设集团有限公司门户登录
  • 我的网站 dedecms公司架构体系搭建
  • 四会网站建设网站推广短信
  • 影视网站建设方案青岛关键词快速排名
  • 网站建设哪家公司便宜网站的建设思想
  • 可以做黄金期权的网站建设银行官方网站客户端
  • 苏州微信网站中国数据域名注册
  • 手机网站源码 php哪些网站可以做店淘客
  • 网站报价表格网站怎么做内容
  • 一个网站绑定多个域名 卖域名西安讯展信息科技有限公司
  • 微信 公司网站 怎么做备案 网站
  • 一个网站建设域名的构思最全的网站大全
  • 广州门户网站建设方案成都教育网站建设