nai*_*own 5 css c# asp.net webforms
CssClass在代码隐藏中设置很容易,但是存在覆盖现有类的风险.
我需要设置某些元素,ReadOnly = true;并且我想将样式应用为视觉提示,该项目无法更改......很简单:
.CssClass += " ReadOnlyStyle";
Run Code Online (Sandbox Code Playgroud)
但有时我还需要更改相同的元素,ReadOnly = false;这意味着我将需要删除我设置的CSS类,而不删除我可能已分配的任何其他样式.
最好的方法是什么?
Joh*_*hn_ 14
我已经采用了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();
}
}
Run Code Online (Sandbox Code Playgroud)
在C#3中,您可以添加一些扩展方法.
static class WebControlsExtensions
{
public static void AddCssClass (this WebControl control, string cssClass)
{
control.CssClass += " " + cssClass;
}
public static void RemoveCssClass (this WebControl control, string cssClass)
{
control.CssClass = control.CssClass.replace(" " + cssClass, "");
}
}
Run Code Online (Sandbox Code Playgroud)
用法:-
ctl.AddCssClass("ReadOnly");
ctl.RemoveCssClass("ReadOnly");
Run Code Online (Sandbox Code Playgroud)
请注意,RemoveCssClass旨在仅删除AddCssClass添加的那些类,并且具有添加2个附加类名的限制,最短名称不应与最长名称的开头完全匹配.例如,如果添加了"test"和"test2",则无法在不破坏CssClass的情况下删除测试.这可以通过RegEx得到改善,我希望上述内容足以满足您的需求.
请注意,如果您没有C#3,this则从第一个参数中删除关键字,并以常规方式使用静态方法.
| 归档时间: |
|
| 查看次数: |
35939 次 |
| 最近记录: |