当前位置: 首页 > 编程语言 > C#

从代码共享更改CSS类

时间:2023-04-10 21:31:51 C#

从代码更改CSS类在代码隐藏中设置CssClass很容易,但存在覆盖现有类的风险。我需要将一些元素设置为ReadOnly=true;我想将样式作为视觉提示,表明该项目无法更改...简单:.CssClass+="ReadOnlyStyle";但是有时候我也需要把同一个元素改成ReadOnly=false;意味着我将需要删除我设置的CSS类,而不是我可能已分配的任何其他样式。最好的方法是什么?我采用了AnthonyWJones的原始代码并对其进行了修改,以便它无论如何都能正常工作:staticclassWebControlsExtensions{publicstaticvoidAddCssClass(thisWebControlcontrol,stringcssClass){CssClass.Split(newchar[]{''},StringSplitOptions.RemoveEmptyEntries).ToList();类。添加(cssClass);control.CssClass=classes.ToDelimitedString("");}publicstaticvoidRemoveCssClass(thisWebControlcontrol,stringcssClass){Listclasses=control.CssClass.Split(newchar[]{''},StringSplitOptions.RemoveEmptyEntries).ToList();classes.Remove(cssClass);control.CssClass=classes.ToDelimitedString("");}}staticclassStringExtensions{publicstaticstringToDelimitedString(thisIEnumerablelist,stringdelimiter){StringBuildersb=newStringBuilder();foreach(列表中的字符串项){if(sb.Length>0)sb.追加(定界符);某人追加(项目);}返回sb.ToString();在C#3中,您可以添加一些扩展方法。staticclassWebControlsExtensions{publicstaticvoidAddCssClass(thisWebControlcontrol,stringcssClass){control.CssClass+=""+cssClass;}publicstaticvoidRemoveCssClass(thisWebControlcontrol,stringcssClass){control.CssClass=control.CssClass.replace(""+cssClass,"");}}用法:-ctl.AddCssClass("ReadOnly");ctl.RemoveCssClass("只读");请注意,RemoveCssClass旨在仅删除由AddCssClass添加的那些类,并且添加了2个额外类名的限制,最短名称不应与最长名称的开头完全匹配。例如,如果添加了“test”和“test2”,则在不破坏CssClass的情况下无法删除测试。这可以通过RegEx进行改进,我希望以上内容足以满足您的需求。请注意,如果您没有C#3,请从第一个参数中删除this关键字并以正常方式使用静态方法。相关...如果您只想根据条件切换类...booldisable=true;//这会根据UI状态而变化(true/false)stringnewClass=disable?"BtnGray":"BtnPink";字符串currentClass=禁用?"BtnPink":"BtnGray";myButton.CssClass=myButton.CssClass.Replace(currentClass,newClass);此版本检查以确保在添加之前未添加给定的类。publicstaticvoidCssAddClass(thisWebControlcontrol,stringclassName){varclassNames=control.CssClass.Split(new[]{''},StringSplitOptions.RemoveEmptyEntries);如果(classNames.Contains(className)){返回;}control.CssClass=string.Concat(classNames.Select(name=>name+"").ToArray())+className;}publicstaticvoidCssRemoveClass(thisWebControlcontrol,stringclassName){varclassNames=fromnameincontrol.CssClass.Split(new[]{''},StringSplitOptions.RemoveEmptyEntries)wherename!=className选择名称+"";control.CssClass=string.Concat(classNames.ToArray()).TrimEnd();}我为前C#3制作了一个版本:publicstaticclassWebControlsExtensions{publicstaticvoidAddCssClass(WebControlcontrol,stringcssClass){string[]cssClasses=control.CssClass.Split(newchar[]{''},StringSplitOptions.RemoveEmptyEntries);列表类=新列表(cssClasses);如果(!classes.Contains(cssClass)){classes.Add(cssClass);}控制.CssClass=StringExtensions.ToDelimitedString(类,"");}publicstaticvoidRemoveCssClass(WebControlcontrol,stringcssClass){string[]cssClasses=control.CssClass.Split(newchar[]{''},StringSplitOptions.RemoveEmptyEntries);列表类=新列表(cssClasses);布尔移除=真;while(removed){removed=classes.移除(cssClass);}控制。CssClass=字符串扩展。ToDelimitedString(类,“”);}}staticclassStringExtensions{publicstaticstringToDelimitedString(Listlist,stringdelimiter){StringBuildersb=newStringBuilder();foreach(列表中的字符串项){if(sb.Length>0)sb.追加(定界符);某人。追加(项目);}返回sb.ToString();}}像这样使用:WebControlsExtensions.AddCssClass(ctl,"classname");WebControlsExtensions.RemoveCssClass(ctl,"classname");这只会添加一个类,如果它还没有一个它也会删除一个类的所有实例(如果由于某种原因有多个)纯.NET2.0(没有扩展!没有LINQ!没有RegEx!没有不必要的WebControl班级!)。这些方法非常通用,不能只用于CSS类。publicstaticstringAddCssClass(stringclassContainer,stringclassName){if(string.IsNullOrEmpty(classContainer))returnclassName??字符串.空;如果(string.IsNullOrEmpty(className))返回classContainer;varclassNames=classContainer.Split(new[]{''},StringSplitOptions.RemoveEmptyEntries);如果(Array.Exists(classNames,delegate(strings){returns.Equals(className);}))returnclassContainer;返回类容器+""+类名;}publicstaticstringRemoveCssClass(stringclassContainer,stringclassName){if(string.IsNullOrEmpty(classContainer))returnclassName??字符串.空;如果(string.IsNullOrEmpty(className))返回classContainer;varclassNames=classContainer.Split(new[]{''},StringSplitOptions.RemoveEmptyEntries);intindex=Array.FindIndex(classNames,delegate(strings){returns.Equals(className);});if(index>=0){returnstring.Join("",classNames,0,index)+(index+1你可以自己制作自定义课程吗?从ASP.NET点击按钮派生并在某处为只读添加属性...可能在OnPreRender中,您可以检查新属性并相应地设置(或不设置)CSSClass属性。以上就是C#学习教程:从代码改CSS类分享的全部内容。如果对您有用,需要进一步了解C#学习教程,希望您多多关注---本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: