我的页面上有一些带有“错误”类的标签,.error的规则是:
.error {
color:Red;
visibility:hidden
}
标签的标记是:
<asp:Label ID="lblError" runat="server" CssClass="error" ></asp:Label>
然后我在后面的代码中设置错误标签的.Text属性
如果我在设置文本时使用lblError.Visible = True
,则不会显示标签。任何想法为什么会这样?我可能在这里错了,但我认为设置.Visible就像设置可见性风格一样?
答案 0 :(得分:14)
Visible属性会影响整个元素的呈现,与CSS可见性属性无关。如果为false,则在阻止任何HTML呈现时可见。
要更改css属性,您需要手动执行此操作。您可以通过从元素中删除“error”类(通过CssClass属性)或通过Attributes属性手动设置style =“visibility:visible”属性来实现此目的(因为样式属性覆盖css类):
control.Attributes["style"] = "visibility: visible";
答案 1 :(得分:12)
您对CSS可见性与控件的服务器端Visible属性感到困惑。为了更好地理解它,我建议您创建一个带有标签的示例页面,将Visible属性切换为true和false,并查看生成的HTML。
您会发现如下。如上:
<div>
<label runat="server" visible="true">Hello</label>
</div>
将呈现:
<div>
<label>Hello</label>
</div>
设置为false时,将呈现:
<div>
</div>
答案 2 :(得分:3)
看看这个页面,它应该澄清一些事情: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.style.aspx
如前所述:
Visible属性是服务器端并确定服务器是否将呈现控件(如果它不呈现,将不会为其创建HTML,并且它不在最终HTML发送到客户端)。
Style属性控制元素的style属性。元素将被渲染,但您可以控制可见性(CSS)。