Ejemplo n.º 1
0
        /// <summary>
        /// 获取html标签内容
        /// </summary>
        /// <param name="tag">标签类型</param>
        /// <param name="param">属性</param>
        /// <param name="type">控制类型</param>
        /// <param name="hasPermission">是否有控制权限</param>
        /// <param name="text">文本[可选]:默认为空</param>
        /// <returns>返回html标签</returns>
        public string GetHtmlTag(TagEnum tag, object param, ControllType type = ControllType.Default, bool hasPermission = true, string text = "")
        {
            if (type.Equals(ControllType.Default) && !hasPermission)
            {
                return(string.Empty);
            }

            var           description  = tag.GetDescription().Split(';');
            List <string> exceptFileds = null;

            if (description.Length > 1)
            {
                exceptFileds = description[1].Split(',').ToList();
            }
            else if (description.Length == 0)
            {
                return(string.Empty);
            }

            if (description[0].Contains(@"{1}"))
            {
                return(string.Format(description[0], GetObjectPropertyString(exceptFileds, param, type, hasPermission).Join(" "), text));
            }
            else
            {
                return(string.Format(description[0], GetObjectPropertyString(exceptFileds, param, type, hasPermission).Join(" ")));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取属性列表
        /// </summary>
        /// <param name="exceptFileds">需排除,不用生成的属性</param>
        /// <param name="param">属性</param>
        /// <param name="type">控制类型</param>
        /// <param name="hasPermission">是否有权限</param>
        /// <returns>返回属性列表</returns>
        private List <string> GetObjectPropertyString(List <string> exceptFileds, object param,
                                                      ControllType type, bool hasPermission)
        {
            var key = new { ExceptFileds = exceptFileds, Param = param, ControllorType = type, HasPermission = hasPermission };

            if (!cache.ContainsKey(key))
            {
                lock (ObjLock)
                {
                    if (cache.ContainsKey(key))
                    {
                        return(cache[key] as List <string>);
                    }
                    var attrList   = new List <string>();
                    var properties = param.GetType().GetProperties();

                    if (!hasPermission && type.Equals(ControllType.Disabled))
                    {
                        attrList.Add(string.Format(@"{0}='{1}'", @"disabled", @"disabled"));
                    }

                    foreach (var property in properties)
                    {
                        if (exceptFileds != null && exceptFileds.Select(item => item.ToLower()).Contains(property.Name.ToLower()))
                        {
                            continue;
                        }
                        var valid = property.Name.ToLower() == @"style" && type.Equals(ControllType.Display) && !hasPermission;
                        attrList.Add(string.Format(@"{0}='{1}'", property.Name, property.FastGetValue(param) + (valid ? @";display:none" : string.Empty)));
                    }
                    if (!properties.Select(property => property.Name.ToLower()).Contains("style"))
                    {
                        attrList.Add((type.Equals(ControllType.Display) && !hasPermission) ? @"style='display:none'" : string.Empty);
                    }
                    cache.Add(key, attrList);
                }
            }
            return(cache[key] as List <string>);
        }