一尘不染

从代码更改CSS类

css

CssClass在后面的代码中设置很容易,但是这会覆盖现有类。

我需要设置某些元素,ReadOnly = true;并且我想应用一种样式作为视觉提示,说明该项目不能更改…很容易:

.CssClass += " ReadOnlyStyle";

但是有时我 需要更改相同的元素,ReadOnly = false;这意味着我将需要删除设置的CSS类,而不删除可能已分配的任何其他样式。

最好的方法是什么?


阅读 248

收藏
2020-05-16

共1个答案

一尘不染

我采用了AnthonyWJones的原始代码并对其进行了修改,以使其在任何情况下均能正常工作:

static class WebControlsExtensions
    {
        public static void AddCssClass(this WebControl control, string cssClass)
        {
            List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

            classes.Add(cssClass);

            control.CssClass = classes.ToDelimitedString(" ");
        }

        public static void RemoveCssClass(this WebControl control, string cssClass)
        {
            List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

            classes.Remove(cssClass);

            control.CssClass = classes.ToDelimitedString(" ");
        }
    }

    static class StringExtensions
    {
        public static string ToDelimitedString(this IEnumerable<string> list, string delimiter)
        {
            StringBuilder sb = new StringBuilder();
            foreach (string item in list)
            {
                if (sb.Length > 0)
                    sb.Append(delimiter);

                sb.Append(item);
            }

            return sb.ToString();
        }
    }
2020-05-16