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

酒店网站建设方案廊坊网站建设优化

酒店网站建设方案,廊坊网站建设优化,福建中江建设公司网站,成都网站搜索排名优化公司简介 PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管…

简介

PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等

案例源码

案例源码在

https://gitee.com/pastecode/paste-template

不定期升级

AllInDto!

通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!

在这里插入图片描述

select lselect selects

对于select(option),相信前端的小伙伴肯定熟悉,作为表单中的一个重要组件,PasteForm也对这个组件做了支持!

特性信息

select:在UI中使用表示,所以只能选择一个
selects:则使用div显示,一般一行一个数据,允许多选
lselect:和selects类似,不过他是横向表示的

字段类型示例说明
args1字符[{“name”:“大”,“value”:“1”},{“name”:“小”,“value”:“2”}]表示单选的可选值,name是显示 value是值,如果为空,则对应字段必须为enum类型,系统会去读取enum的内容
args2字符,如果值类型不是数组,则返回字符串,用这个字符拼接,也就是分割字符,这个要看当前字段是否是string类型
args3字符-1,0去除某些值的选项,比如去除-1表示的全部等,在enum的时候适用,配置的时候args1为空这个时候,从enum中读取
args4字符0可选数量,不填或者0变表示不限

reload

这个特性有点特殊,因为必须和select结合使用,他表示select选择其中一项后,组合选中的值,重新向API请求,API在接收到这个信息后,针对性的做一些变更!

在select上适用,比如位置使用select呈现,首页,个人中心,当这个选项变更的时候,我们希望对应的图片的规格变成,则有切换后,去读取reload特性
然后把值回传给API,API居于query参数,把默认值修改和对应的图片规格变更后下发,注意query的key是不能重复的

字段类型示例说明
args1strlocation表示query的字段,值为当前选定的值

案例UI

在这里插入图片描述

提交信息

上面的UI中,我们是随便填写点东西后,提交,看到的提交信息如下

在这里插入图片描述

这里要注意,如果比如age这个字段没有填写,留空,由于字段类型为int[],则这个时候回传为null,也就是提交的信息中没有age这个字段!
注意看上图的回传的数据类型各不同,这个是由Dto决定的!

Dto内容

    /// <summary>/// /// </summary>public class SelectDto{///<summary>///单选 一般表示状态,内定的,有点像Enum,关于Enum后续会支持///</summary>[ColumnDataType("mark", "test", "datetype")][PasteSelect("[{\"name\":\"日类型\",\"value\":0},{\"name\":\"月类型\",\"value\":1},{\"name\":\"年类型\",\"value\":2}]","0")]public int DateType { get; set; }/// <summary>/// 年龄 多个之间使用,隔开/// </summary>[ColumnDataType("splitarray")]public int[] Ages { get; set; }/// <summary>/// 复选 多个之间用逗号隔开/// </summary>[PasteSelects("[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]", ",")]public string TypeStrs { get; set; }/// <summary>/// 复选数组 配置最多选择1项,由args4配置,当前等效于PasteSelects/// </summary>[ColumnDataType("selects", "[{\"name\":\"日类型\",\"value\":\"day\"},{\"name\":\"月类型\",\"value\":\"month\"},{\"name\":\"年类型\",\"value\":\"year\"}]","","","1")]public string[] Types { get; set; }/// <summary>/// 分类 多个之间使用,隔开,有默认值1,2,5,前端为字符串输入,用分隔符分割,后端接收到的为int[]/// </summary>[ColumnDataType("splitarray")]public int[] Tabs { get; set; } = new int[] { 1, 2, 5 };/// <summary>/// 曾用名 多个之间使用,隔开,表示的是用户用分隔符输入,然后提交给后端的时候变更为对应的数组,比如当前的string[]/// </summary>[ColumnDataType("splitarray")]public string[] Names { get; set; }/// <summary>/// 动作类型 这是一个Enum类型/// </summary>public ActionEnum ActionType { get; set; }/// <summary>/// 横向分类 这是一个Enum类型,而且使用了过滤,过滤掉-1和0的值的选项不返回前端/// </summary>[PasteLselect("", "-1,0")]public ActionEnum ClassType { get; set; }}

如上所示,字段ActionType和ClassType其实都是ActionEnum,但是在UI中的显示完全不一样,因为ActionType默认为select,而ClassType配置为lselect了,
还有一点,看最上图的UI中,横向分类只有"正常,停止,取消",那是因为ClassType的lselect特性配置了ignore=-1,0 表示忽略值为-1和0的选项!

ActionEnum枚举

我看下Enum的内容

    /// <summary>/// 动作枚举/// </summary>public enum ActionEnum{/// <summary>/// 查看所有/// </summary>all=-1,/// <summary>/// 正常 可以正常使用的/// </summary>start = 1,/// <summary>/// 停止/// </summary>stop = 4,/// <summary>/// 取消/// </summary>cannel = 5}

注意 Enum的文件需要存放于XXX.Domian或者XXX.Application.Contracts子项目中!

数量限定

查看特性参数中的args4,表示限定数量,如上我配置了复选数组这个字段的数量限制为1,则再选择一个的时候就如下

在这里插入图片描述

reload的使用

reload源自于特殊的需求,比如贴代码的发帖中有这么限定,就是用户可以选择文章类型是Markdown还是Richtext

在这里插入图片描述

如上,这个案例,我们希望用户选择内容格式为HTML的时候内容为Richtext模式,当用户选择内容格式为markdown的时候,内容格式切换为Markdown
如果上图我点击内容格式,选择为Markdown,则页面会刷新以下,然后看到的如下图:

在这里插入图片描述

Reload Dto

    ///<summary>///PageInfo///</summary>public class PageInfoAddDto{///<summary>///标题///</summary>[MaxLength(64)]public string Title { get; set; }/// <summary>/// 封面图/// </summary>[MaxLength(256)][ColumnDataType("image", "1", "article", "300*300")]public string CoverImage { get; set; } = "";///<summary>///描述///</summary>[MaxLength(128)]public string Desc { get; set; }///<summary>///关键字///</summary>[MaxLength(128)]public string KeyWord { get; set; }///<summary>///文章类型///</summary>[PasteSelect(PublicString.SelectValueBlogType)]public int ArticleType { get; set; }/// <summary>/// 所属板块/// </summary>[ColumnDataType("outers", "cateInfo", "", "id", "name")]public int[] cateids { get; set; }///<summary>///文章正文///</summary>[ColumnDataType("richtext","","markdown")]public string Body { get; set; } = "";/// <summary>/// Markdown/// </summary>[ColumnDataType("markdown", "", "body")]public string Markdown { get; set; } = "";/// <summary>/// 内容格式 0富文本html模式1md模式/// </summary>[PasteSelect(PublicString.SelectValueBlogBodyType)][ColumnDataType("reload", "bstyle")][ColumnDataType("query","bstyle")]public int BodyStyle { get; set; } = 0;}

由于配置reload之后,是在对应的select选择修改后,重新加载,所以有一个载入的动作,所以需要配置query特性,表示从url中获取这个值!

Api代码

由于这个比较特殊,所以对应的API也要变更,案例中的如下:

        /// <summary>/// 读取AddDto的数据模型/// </summary>/// <returns></returns>[HttpGet]public PasteBuilderHelper.VoloModelInfo ReadAddModel(){var model = new PageInfoAddDto();if (base._httpContext.Request.Query.ContainsKey("bstyle")) {int.TryParse(base._httpContext.Request.Query["bstyle"].ToString(),out var bstyle);model.BodyStyle = bstyle;}var _model = PasteBuilderHelper.ReadModelProperty(model);if (_model != null){if (model.BodyStyle == 0){var _find = _model.Properties.Where(x => x.Name == "markdown").FirstOrDefault();if (_find != null){if (_find.Attributes == null) { _find.Attributes = new List<PasteBuilderHelper.VoloModelAttribute>(); }_find.Attributes.Add(new PasteBuilderHelper.VoloModelAttribute { Name = "hidden" });}}else{var _find = _model.Properties.Where(x => x.Name == "body").FirstOrDefault();if (_find != null){if (_find.Attributes == null) { _find.Attributes = new List<PasteBuilderHelper.VoloModelAttribute>(); }_find.Attributes.Add(new PasteBuilderHelper.VoloModelAttribute { Name = "hidden" });}}}return _model;}

上面代码中,就是基于url中的参数bstyle,来动态修改字段和字段的特性,从而达到返回前端不一样的!

更多相关查看 贴代码PasteForm专题介绍

我们下期见!

http://www.mnyf.cn/news/35947.html

相关文章:

  • 做财务还是网站运营西安seo网站建设
  • 支付网站怎么做的廊坊关键词优化报价
  • 北京做网站建设的公司排名优秀营销案例分享
  • 网站建设目的内容输出莆田百度seo公司
  • p2p网站如何做测试工具永州网络推广
  • 设计网站导航大全百度云网盘资源分享网站
  • 如何用web2py做网站石家庄seo报价
  • 制作网站接单营销渠道策划方案
  • 国外有什么网站是做服装的培训网络营销的机构
  • 佛山新网站建设代理商电子商务营销方法
  • dede做英文网站优化今日军事新闻最新消息中国
  • 宁波网站建设优化服务公司想建立自己的网站
  • 淄博网站建设zb533拉新平台哪个好佣金高
  • 字画价格网站建设方案seoapp推广
  • 人力外包公司有哪些seo建站要求
  • 建站程序的选择云盘网页版登录
  • 邯郸建立网站费用缅甸在线今日新闻
  • 网站500新乡seo顾问
  • wordpress 图表插件李勇seo的博客
  • 外贸网站seo优化方案怎么做网页宣传
  • 长春南关网站建设网站建设制作专业
  • 高负载php网站开发文案发布平台
  • 深圳app外包开发公司关键词优化排名怎么做
  • 手机赚钱网站网站seo方案策划书
  • 个人网站备案备注南京seo收费
  • 怎样去查网站备案号网络营销的工具和方法
  • 在哪里找做网站的客户seo臻系统
  • 智冠宝企业网站管理系统广州最新疫情
  • 做宣传网站需要多少钱关键词排名优化价格
  • 重庆网站建设套餐seo站长工具推广平台