c# - 从代码更改 CSS 类

标签 c# css asp.net webforms

在代码隐藏中设置 CssClass 很容易,但这有覆盖现有类的风险。

我需要将某些元素设置为 ReadOnly = true; 并且我想应用一种样式作为视觉提示,表明该元素无法更改......非常简单:

.CssClass += " ReadOnlyStyle";

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

执行此操作的最佳方法是什么?

最佳答案

我对 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();
        }
    }

关于c# - 从代码更改 CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445967/

相关文章:

c# - 用for循环填充矩阵

c# - 考虑到 sleep 时间,我如何测量代码某些部分的时间?

javascript - JS 和 HTML 隐藏 div 不起作用

javascript - 为复选框列表项列表设置焦点

c# - 如何从 Asp.net 2.0 中的代码隐藏按钮单击弹出警报?

c# - 自定义配置文件重复用户信息

c# - System.ValueTuple 的排序顺序是官方指定的吗?在哪里?

c# - WCF 消息检查器

html - 使用 HTML iFrame 时显示的边框和滚动条

css - Webpack 配置仅用于 css 和图像