具有CSS可见性的ASP.NET控件:隐藏,未在Control.Visible = true上显示

时间:2009-07-12 10:18:07

标签: asp.net css visibility

我的页面上有一些带有“错误”类的标签,.error的规则是:

.error {
    color:Red;
    visibility:hidden    
}

标签的标记是:

<asp:Label ID="lblError" runat="server" CssClass="error" ></asp:Label>

然后我在后面的代码中设置错误标签的.Text属性 如果我在设置文本时使用lblError.Visible = True,则不会显示标签。任何想法为什么会这样?我可能在这里错了,但我认为设置.Visible就像设置可见性风格一样?

3 个答案:

答案 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)。