2009-07-12 6 views
5

に示されていないが、.ERRORのための規則は次のとおりです。ASP.NETコントロール:私は「エラー」のクラスで私のページにいくつかのラベルを持っている隠された、Control.Visible =真

.error { 
    color:Red; 
    visibility:hidden  
} 

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

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

私は、その後の後ろに自分のコードに誤りラベルの.textのプロパティを設定します。
テキストを設定するときにlblError.Visible = Trueを使用すると、ラベルは表示されません。それはなぜだろう?私はここで間違っているかもしれませんが、私はビジースタイルを設定するのと同じように設定したと思っていましたか?

答えて

13

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

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

control.Attributes["style"] = "visibility: visible"; 
3

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

前に書かれたよう:

をVisibleプロパティは、サーバー側で、サーバーが制御しないか(場合をレンダリングするかどうかを判断しますレンダリングされず、HTMLはありません。b eはそれのために作成され、最終的なHTMLはクライアントに送信されません)。

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

10

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

あなたが見つけることは次のとおりです。真:

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

がレンダリングされます:

falseに設定すると、それがレンダリングされます:

<div> 

</div> 
+0

をええ、私はdiffが何であったかわかりませんでした。 – Fermin

+0

これはスーパーです。より少ないHTMLのレンダリング=より速いウェブサイト。たとえば、特定のボタンをクリックした後にコントロールを動的に表示したいと思えば、私はCSSのアプローチしか使用しないと仮定していますか? – rory

+0

@rory yesこのコントロールをページで再び取得するには、サーバーへのポストバックが必要になります。 – Sarfaraaz

関連する問題