CssClass在后面的代码中设置很容易,但是这会覆盖现有类。
CssClass
我需要设置某些元素,ReadOnly = true;并且我想应用一种样式作为视觉提示,说明该项目不能更改…很容易:
ReadOnly = true;
.CssClass += " ReadOnlyStyle";
但是有时我 还 需要更改相同的元素,ReadOnly = false;这意味着我将需要删除设置的CSS类,而不删除可能已分配的任何其他样式。
ReadOnly = false;
最好的方法是什么?
我采用了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(); } }