6

ページに「error」のクラスのラベルがいくつかあります。.errorのルールは次のとおりです。

.error {
    color:Red;
    visibility:hidden    
}

ラベルのマークアップは次のとおりです。

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

次に、コードビハインドでエラーラベルの.Textプロパティを設定します。テキストを設定するときに
使用すると、ラベルが表示されません。lblError.Visible = Trueなぜそうなるのか、何か考えはありますか?私はここで間違っているかもしれませんが、.Visibleを設定することは、可視性スタイルを設定するようなものだと思いましたか?

4

3 に答える 3

15

Visibleプロパティは、要素全体のレンダリングに影響し、CSSの可視性属性とは関係ありません。falseの場合、HTMLがまったくレンダリングされないようにすると表示されます。

css属性を変更するには、手動で変更する必要があります。これを行うには、( CssClassプロパティを介して)要素から "error"クラスを削除するか、 Attributesプロパティを介して手動でstyle = "visibility:visible"属性を設定します(style属性はcssクラスをオーバーライドするため)。

control.Attributes["style"] = "visibility: visible";
于 2009-07-12T10:25:22.090 に答える
13

CSSの可視性とコントロールのサーバー側のVisibleプロパティの間で混乱が生じています。理解を深めるために、ラベル付きのサンプルページを作成し、Visibleプロパティをtrueとfalseの間で切り替えて、生成されたHTMLを表示することをお勧めします。

あなたが見つけるものは次のとおりです。真実として:

<div>
   <label runat="server" visible="true">Hello</label>
</div>

レンダリングします:

<div>
    <label>Hello</label>
</div>

falseに設定すると、次のようにレンダリングされます。

<div>

</div>
于 2009-07-12T10:29:07.277 に答える
3

このページを見てください、それは物事を明確にするはずです:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.style.aspx

前に書いたように:

Visibleプロパティはサーバー側であり、サーバーがコントロールをレンダリングするかどうかを決定します(レンダリングされない場合、HTMLは作成されず、クライアントに送信される最終的なHTMLには含まれません)。

Styleプロパティは、要素のスタイル属性を制御します。要素はレンダリングされますが、可視性(CSS)を制御できます。

于 2009-07-12T10:27:21.930 に答える