我尝试使用 server-side .CssClass
,但这不适用于我。我的 div 有runat="server"
,所以我可以访问它,但是当我点击“。”时,我无法.CssClass
在下拉列表中看到。有谁知道如何克服这个或任何其他可能有效的解决方案?
好吧,我的错。我刚刚发现这不适用于 HTML 控件,仅适用于 asp 控件
如果您想读取类名,则需要使用代码:
string className = Test.Attributes["class"].ToString();
如果要替换特定类,则需要使用以下代码:
Test.Attributes.Add("class", Test.Attributes["class"].ToString().Replace("spacerDiv", ""));
HTML
<div id="Test" runat="server"></div>
代码背后
add => Test.Attributes.Add("class", "myClass")
remove => Test.Attributes.("class") = "";
这将更具体:
HTML
<div id="Test" runat="server"></div>
服务器代码:
Test.Attributes.Remove("class");
这与 Tim 的解决方案相同,但我删除了不需要的 toString 方法。
myDiv.Attributes.Add("class", myDiv.Attributes["class"].Replace("spacerDiv", ""));
将类添加到 div 有点相同。
myDiv.Attributes.Add("class", "spacerDiv");
删除 CSS 类
myDiv.Attributes["class"]="";
为任何 HtmlGenericControl 添加或删除类的更好方法是使用如下提供的扩展:
public static void RemoveCssClass(this HtmlGenericControl controlInstance, string css)
{
var strCssClass = controlInstance.Attributes["class"];
controlInstance.Attributes["class"] = string.Join(" ", strCssClass.Split(' ').Where(x => x != css).ToArray());
}
public static void AddCssClass(this HtmlGenericControl controlInstance, string css)
{
var strCssClass = controlInstance.Attributes["class"];
controlInstance.Attributes["class"] = string.Join($" {css} ", strCssClass.Split(' ').ToArray());
}
对于 WebControl,相同的代码可以修改如下:
public static void RemoveCssClass(this WebControl controlInstance, string css)
{
controlInstance.CssClass = string.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray());
}
public static void AddCssClass(this WebControl controlInstance, string css)
{
controlInstance.CssClass = string.Join($" {css} ", controlInstance.CssClass.Split(' ').ToArray());
}