2009-07-12 34 views
5

Tôi có một vài nhãn trên trang của mình với một lớp của 'lỗi', các quy tắc cho .error là:ASP.NET kiểm soát với tầm nhìn CSS: ẩn, không được hiển thị trên Control.Visible = true

.error { 
    color:Red; 
    visibility:hidden  
} 

các đánh dấu cho các nhãn là:

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

sau đó tôi thiết lập thuộc tính của nhãn lỗi .text trong mã của tôi phía sau.
Nếu tôi sử dụng lblError.Visible = True khi tôi đặt văn bản, nhãn sẽ không được hiển thị. Bất kỳ ý tưởng tại sao đó sẽ là? Tôi có thể sai ở đây nhưng tôi nghĩ rằng thiết lập .Visible giống như thiết lập phong cách hiển thị?

Trả lời

13

Thuộc tính Visible ảnh hưởng đến việc hiển thị toàn bộ phần tử và không liên quan đến thuộc tính hiển thị CSS. Khi sai, Hiển thị khi ngăn không cho bất kỳ HTML nào được hiển thị.

Để thay đổi thuộc tính css, bạn sẽ cần phải thực hiện thủ công. Bạn có thể thực hiện việc này bằng cách xóa lớp "lỗi" khỏi phần tử (thông qua thuộc tính CssClass) hoặc bằng cách đặt thuộc tính style = "visibility: visible" theo cách thủ công thông qua thuộc tính Attributes (vì thuộc tính style ghi đè lớp css):

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

có một cái nhìn tại trang này, cần làm rõ điều: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.style.aspx

Như viết trước:

thuộc tính Visible là serverside và xác định nếu máy chủ sẽ làm cho sự kiểm soát hay không (nếu nó không được trả lại, không có HTML sẽ b e tạo ra cho nó, và nó không phải trong HTML cuối cùng gửi cho khách hàng).

Thuộc tính Kiểu kiểm soát thuộc tính kiểu của phần tử. Phần tử sẽ được hiển thị nhưng bạn có thể kiểm soát khả năng hiển thị (CSS).

10

Bạn đang bị nhầm lẫn giữa khả năng hiển thị CSS và thuộc tính Có thể nhìn thấy phía máy chủ của điều khiển. Để hiểu rõ hơn, tôi khuyên bạn nên tạo một trang mẫu có nhãn, chuyển đổi thuộc tính Có thể nhìn thấy giữa đúng và sai và xem HTML được tạo.

Những gì bạn sẽ tìm thấy như sau. Như đúng:

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

sẽ render:

Khi đặt sai, nó sẽ render:

<div> 

</div> 
+0

Yeah, tôi đã không chắc chắn những gì khác là. – Fermin

+0

Đây là siêu. Ít html để render = trang web nhanh hơn. Tôi có đúng trong giả sử tôi sẽ chỉ sử dụng phương pháp tiếp cận css nếu tôi muốn tự động tiết lộ một điều khiển sau khi một nút nhất định được nhấp ví dụ? – rory

+0

@rory yes để có được điều khiển này trong trang một lần nữa một postback đến máy chủ sẽ được yêu cầu mặc dù. – Sarfaraaz

Các vấn đề liên quan