『贴代码』
PasteSpider
PasteForm
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
如何实现枚举不一样的样式,比如错误是红色的,警告是黄色的,普通是默认的
贴代码 2026-01-22 19 0 0
我们知道说到枚举,一般有2个东西,1个是值,一个是名称,比如权限类型,有权限,菜单,按钮,对应的值可以自己定义,比如10,20,30,那么如何实现在UI中显示不一样的颜色呢?

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


效果图

图片alt
如上图,可以看到权限类型,有不一样的颜色!
首先你的dll的版本应该

      <PackageReference Include="PasteForm.Helper" Version="26.1.15" />

我们都知道,有些数据用枚举比较好实现

代码

    /// <summary>
    /// 一些状态的枚举
    /// </summary>
    [Description("状态枚举")]
    public enum EnumStateQuery
    {
        /// <summary>
        /// 一般用于查询,表示忽略,直接查询所有
        /// </summary>
        [Description("查询")]
        all = -1,
        /// <summary>
        /// 一般表示禁用,不可用
        /// </summary>
        [Description("禁用")]
        fail = 0,
        /// <summary>
        /// 一般表示正常
        /// </summary>
        [Description("正常")]
        ok = 1,
        /// <summary>
        /// 一般表示取消
        /// </summary>
        [Description("取消")]
        cannel = 2,
        /// <summary>
        /// 一般表示删除
        /// </summary>
        [Description("删除")]
        deleted = 4
    }

改进代码

    /// <summary>
    /// 权限类型
    /// </summary>
    [Description("权限类型")]
    public enum EnumRoleType
    {
        /// <summary>
        /// 全部
        /// </summary>
        [Description("全部")]
        All = -1,
        /// <summary>
        /// <![CDATA[<i_*_style="color:green;">权限</i>]]>
        /// </summary>
        [Description("权限")]
        Role = 0,
        /// <summary>
        /// 菜单
        /// </summary>
        [Description("<span_*_style=\"background:#f3f3f3;color:blue;\">菜单</span>")]
        Menu = 1,
        /// <summary>
        /// 权限
        /// </summary>
        [Description("<span_*_style=\"color:red;\">按钮</span>")]
        Button = 2,
        /// <summary>
        /// 小程序菜单
        /// </summary>
        [Description("小程序菜单")]
        MiniMenu = 3
    }

读取代码

        /// <summary>
        /// 读取ListDto的数据模型
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "data", "view" })]
        public async Task<VoloModelInfo> ReadListModel()
        {
            var _model = BuilderHelper.AttributeReadModelProperty<RoleInfoListDto>(new RoleInfoListDto());
            var isRoot = await base.IsRootAsync();
            if (!isRoot)
            {
                if (_model.Properties != null)
                {
                    _model.Properties.RemoveAll(x => x.Name == "button");
                }
            }
            var _query_model = BuilderHelper.DynamicReadModelProperty(new InputQueryRoleInfo());
            if (_query_model != null)
            {
                _model.QueryProperties = _query_model.Properties;
            }
            return _model;
        }

看上面代码,我用了2个接口读取Dto的元数据

  • AttributeReadModelProperty
  • DynamicReadModelProperty
    其中AttributeReadModelProperty表示反射Dto后,从特性[Description]来读取注释内容
    而DynamicReadModelProperty表示从XML文档中读取注释内容

关键字*

我们都知道注释的规则是使用空格隔开的,
所以如果你要输出空格,得用*替代!
注释共有几种格式
1.直接留空,这样Form得时候,就直接显示内容了,这个在[PasteSumform]中常搭配使用
2.就单个,表示只有名称,没有注释
3.双段,用空格隔开,表示第一段是名称,第二段是注释
4.三段,其实第一段和第二段有用之外,第三段对于前端来说没用了,第三段得内容主要是给后端开发用得,也就是你鼠标放字段上得时候,提示得注释,是不是很灵活!

更多思考

如果这个枚举,我要前端也就是管理端来控制样式要如何做?
试试class和[PasteHtml]配合使用!元数据只返回枚举得值,然后[PasteHtml]返回特定样式

        /// <summary>
        /// 类型
        /// </summary>
        [Description("类型")]
        [PasteHtml("<span class=\"rclass rtype{{:=item.role_val}}\">{{:=item.roleType}}</span>")]
        public EnumRoleType RoleType { get; set; }

        /// <summary>
        /// 
        /// </summary>
        [PasteHidden]
        public int role_val { get { return (int)RoleType; } }

注意
RoleType返回前端,我默认是小写开头得,也就是roleType,由于他是枚举类型,在UI中会转化成名称(权限),而不是值(2)
所以需要用另外一个字段role_val进行转化
然后PasteHtml中,用到了2个宏!

{{:=item.role_val}}

其中{{:=}}这个是宏的格式,item是为了和表格的行数据匹配,所以form中也用这个表示当前对象,至于role_val就是对应的字段了!
在特定的情况下这个item也表示url中的query!!!

评论列表
贴代码
0 19 0
快捷注册
用户问答更多
PasteForm,神奇了啊!都说低代码,低代码,那个是对于非开发者来说的,感觉PasteForm就是开发者的低代码啊!只要配置好Model,就有对应的CRUD操作,还带一些逻辑,和生成代码是两码事了!!!问题来了,有什么局限性,或者适用哪些场景?
07月份版本的内存占用比以前大了,也没有泄漏,啥情况?以前200MB,这个版本能到300MB
  • 应该和之前的PasteForm引入有关,之前的版本引入了大量的API,看看10月份或者11月份的版本,新版本的PasteForm极大的优化了API接口量,可以说直接从4N优化到了N个(N代表数据表数量)

文档中的组织归属有些问题,啥时候看看,更新更新!
  • 已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!

最新动态
  • 66.****.200 正在查看 PasteSpider之私有仓库的创建和使用 !
  • 49.****.254 正在查看 PasteSpider之2025年06月更新一栏 !
  • 116.****.24 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-Web.IIS.Administration解读(5 !
  • 113.****.27 正在查看 PasteSpider之项目环境-同步过滤-键值配置介绍 !
  • 185.****.5 正在查看 正在查看笔记:48 的详细信息 Page:1 ! !
  • 113.****.62 正在查看 正在查看笔记:29 的详细信息 Page:1 ! !
  • 18.****.11 正在查看 Document:spider !
  • 58.****.28 正在查看 正在查看笔记:48 的详细信息 Page:1 ! !
  • 116.****.81 正在查看 Document:spider !
  • 119.****.125 正在查看 使用Obfuscar混淆(加密)你的程序源码并一键发布! !
  • 82.****.160 正在查看 PasteSpider测试环境之为centos7中的ssh启用证书登陆模式 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2