我有一个div,我试图在代码中添加一个CSS类,但是当我尝试时收到以下错误
Property or indexer 'System.Web.UI.HtmlControls.HtmlControl.Style' cannot be assigned to -- it is read only
我使用以下代码:
protected void BTNEvent_Click(object sender, ImageClickEventArgs e)
{
BtnventCss.Style= "hom_but_a";
}
有人可以帮助我吗?
答案 0 :(得分:48)
如果:
<asp:Button ID="Button1" runat="server" CssClass="test1 test3 test-test" />
添加或删除类,而不是使用
覆盖所有类 BtnventCss.CssClass = "hom_but_a"
保持HTML正确:
string classname = "TestClass";
// Add a class
BtnventCss.CssClass = String.Join(" ", Button1
.CssClass
.Split(' ')
.Except(new string[]{"",classname})
.Concat(new string[]{classname})
.ToArray()
);
// Remove a class
BtnventCss.CssClass = String.Join(" ", Button1
.CssClass
.Split(' ')
.Except(new string[]{"",classname})
.ToArray()
);
这保证了
特别是当客户端开发在一个元素上使用多个类名时。
在您的示例中,使用
string classname = "TestClass";
// Add a class
Button1.Attributes.Add("class", String.Join(" ", Button1
.Attributes["class"]
.Split(' ')
.Except(new string[]{"",classname})
.Concat(new string[]{classname})
.ToArray()
));
// Remove a class
Button1.Attributes.Add("class", String.Join(" ", Button1
.Attributes["class"]
.Split(' ')
.Except(new string[]{"",classname})
.ToArray()
));
你应该将它包装在方法/属性中;)
答案 1 :(得分:30)
<div runat="server">
已映射到HtmlGenericControl
。
尝试使用BtnventCss.Attributes.Add("class", "hom_but_a");
答案 2 :(得分:7)
Style属性获取所有级联样式表(CSS)属性的集合;你不能设置它。
请尝试BtnventCss.CssClass = "hom_but_a";
。
我假设BtnventCss是一个WebControl。
我刚看到你可能正在使用<div runat="server"...
如果是,您可以尝试:
BtnventCss.Attributes.Add("class", "hom_but_a");
您可以将div设为asp:panel - 它们将呈现相同的效果,您将获得更好的服务器端支持。
答案 3 :(得分:5)
对于非ASP.NET控件,即div, table, td, tr
等HTML控件,您需要首先使它们成为服务器控件,分配ID,然后从服务器代码中分配属性:
<head>
<style type="text/css">
.top_rounded
{
height: 75px;
width: 75px;
border: 2px solid;
border-radius: 5px;
-moz-border-radius: 5px; /* Firefox 3.6 and earlier */
border-color: #9c1c1f;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div runat="server" id="myDiv">This is my div</div>
</form>
</body>
myDiv.Attributes.Add("class", "top_rounded");
答案 4 :(得分:3)
您可以使用以下两种扩展方法。它们确保保留任何现有类,并且不会重复添加的类。
public static void RemoveCssClass(this WebControl control, String css) {
control.CssClass = String.Join(" ", control.CssClass.Split(' ').Where(x => x != css).ToArray());
}
public static void AddCssClass(this WebControl control, String css) {
control.RemoveCssClass(css);
css += " " + control.CssClass;
control.CssClass = css;
}
用法:hlCreateNew.AddCssClass("disabled");
用法:hlCreateNew.RemoveCssClass("disabled");
答案 5 :(得分:2)
Button1.CssClass += " newClass";
这不会删除该控件的原始类。试试这个,它应该有用。
答案 6 :(得分:1)
要添加类到html元素,请参阅how to add css class to html generic control div?。答案类似于此处给出的答案,但展示了如何添加类到 html 元素。
答案 7 :(得分:0)
我也在寻找相同的解决方案。我想到了
BtnventCss.CssClass = BtnventCss.CssClass + " hom_but_a";
似乎工作正常,但我不确定这是否是个好习惯