Pure .NET 2.0 (Không có phần mở rộng! Không LINQ! Không RegEx! Không cần lớp WebControl không cần thiết!). Những phương pháp này khá chung chung không chỉ được sử dụng cho các lớp CSS.
Ngoài ra, hãy xem CssClassManipulator của tôi.
public static string AddCssClass(string classContainer, string className)
{
if (string.IsNullOrEmpty(classContainer)) return className ?? string.Empty;
if (string.IsNullOrEmpty(className)) return classContainer;
var classNames = classContainer.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (Array.Exists(classNames, delegate(string s) { return s.Equals(className); })) return classContainer;
return classContainer + " " + className;
}
public static string RemoveCssClass(string classContainer, string className)
{
if (string.IsNullOrEmpty(classContainer)) return className ?? string.Empty;
if (string.IsNullOrEmpty(className)) return classContainer;
var classNames = classContainer.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int index = Array.FindIndex(classNames, delegate(string s) { return s.Equals(className); });
if (index >= 0)
{
return string.Join(" ", classNames, 0, index) +
( index + 1 < classNames.Length ?
" " + string.Join(" ", classNames, index + 1, classNames.Length - index - 1)
:
string.Empty );
}
return classContainer;
}
public static string ToggleCssClass(string classContainer, string className)
{
if (string.IsNullOrEmpty(classContainer)) return className ?? string.Empty;
if (string.IsNullOrEmpty(className)) return classContainer;
var classNames = classContainer.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (Array.Exists(classNames, delegate(string s) { return s.Equals(className); })) return RemoveCssClass(classContainer, className);
return classContainer + " " + className;
}
Nguồn
2013-02-05 14:35:34
tuyệt vời, nhờ – nailitdown
Bằng cách trích xuất một phương thức từ mã phân chia/thao tác/nối và tạo phương thức mở rộng thứ hai cho 'điều khiển HtmlControl' này bằng cách sử dụng' control.Attributes ("class") 'thay vì' control.CssClass', bạn có thể mở rộng khả năng này cho các điều khiển HTML chung có runat = "server" được thêm vào chúng. – patridge
Điều này sẽ thêm một lớp trùng lặp vào danh sách nếu 'AddCssClass()' được gọi trên một chuỗi đã chứa lớp đó. –