2009-07-13 33 views
5

Tôi đã đọc qua điều này, giải thích về thời điểm bạn chọn Điều khiển Web so với Kiểm soát khi tạo điều khiển tùy chỉnh nhưng không đủ. Tôi đã nhìn thấy các điều khiển tùy chỉnh kế thừa từ cả hai khi cả hai công cụ này đều xuất hiện trên giao diện người dùng.Thừa kế từ Điều khiển so với Kiểm soát Web

http://msdn.microsoft.com/en-us/library/yhzc935f.aspx

"Nếu kiểm soát của bạn ám một (UI) yếu tố giao diện người dùng hay bất kỳ yếu tố hữu hình khác trên máy khách, bạn nên lấy được kiểm soát của bạn từ System.Web.UI.WebControls .. ::. WebControl (hoặc một lớp dẫn xuất) Nếu điều khiển của bạn hiển thị phần tử không hiển thị trong trình duyệt, chẳng hạn như phần tử ẩn hoặc phần tử meta, lấy được sự kiểm soát của bạn từ System.Web.UI .. ::. từ Control và thêm các thuộc tính liên quan đến phong cách như Font, ForeColor và BackColor. Ngoài ra, một điều khiển xuất phát từ WebControl sẽ tham gia vào các tính năng chủ đề của ASP.NET mà không cần thêm bất kỳ công việc nào. ”

vì vậy lý do duy nhất để sử dụng WebControl là nếu bạn muốn sử dụng các tính năng tạo kiểu của chúng? Tôi sẽ chỉ xuất ra các chuỗi với một trình xây dựng chuỗi không đúng kiểu nên tôi không quan tâm đến thứ đó. Tôi muốn sử dụng thẳng lên thiết kế tableless và dây để tạo HTML của tôi mà điều khiển của tôi ám anyway.

Trả lời

2

WebControl không hiển thị bảng hoặc bất kỳ thứ gì tương tự trừ khi bạn yêu cầu. Những gì nó có là các tính năng tạo kiểu mà hầu hết người dùng mong đợi từ một điều khiển hiển thị với một giao diện người dùng.

Bạn không mất nhiều thời gian để sử dụng nó. Hãy thử xem nó có gây ra rắc rối cho bạn không.

+0

bạn đang nói về nó cung cấp các thuộc tính như cssClass, v.v ...? – PositiveGuy

+0

Điều khiển của tôi đang tách HTML được chỉ định từ bảng DB của chúng tôi từ hệ thống CMS của chúng tôi mà người dùng đã nhập thông qua hệ thống Quản trị CMS của chúng tôi. Bất kỳ kiểu dáng nào sẽ nằm trong HTML đó hoặc trong bất kỳ phần tử nào như divs mà tôi bọc nội dung này trong logic đằng sau hậu trường với điều khiển tùy chỉnh của tôi. Vì vậy, tôi không thấy trước một nhu cầu cho cssClass, vv như kiểm soát của tôi sẽ xử lý đó. Vì vậy, nếu tôi kế thừa từ Control nó vẫn sẽ xuất ra một số thành phần giao diện người dùng chính nhưng không cần phải tạo kiểu trong suốt thời gian chạy. – PositiveGuy

+0

Ok, điều đó có ý nghĩa, và vâng, tôi đã nói về CssClass, BackColor, BorderColor, v.v. –

10

kiểm soát

Xuất phát từ lớp Control cho phép kiểm soát của chúng tôi để tận dụng lợi thế của phương pháp vẽ được cung cấp bởi lớp kiểm soát, cũng như việc sử dụng ViewState.

WebControl

Lớp WebControl xuất phát từ lớp Control. Tuy nhiên, nếu chúng tôi lấy được kiểm soát tùy chỉnh của chúng tôi từ WebControl, chúng tôi nhận được hỗ trợ miễn phí cho nhiều khía cạnh trực quan của kiểm soát của chúng tôi, như kích thước phông chữ, lớp CSS, màu nền và vân vân.

Tôi nên lấy lớp nào?

Khi bạn đang tạo điều khiển tùy chỉnh yêu cầu ít hoặc không có giao diện người dùng, thì bạn nên lấy được từ lớp Kiểm soát. Nếu điều khiển của bạn yêu cầu sự hỗ trợ UI mở rộng, thì bạn nên lấy được từ WebControl.

Từ: http://dotnetslackers.com/articles/aspnet/ASPNETCustomControlsPart1.aspx

+0

OK để lợi ích duy nhất có thể thực hiện được từ quan điểm "tiêu chuẩn tốt" là nếu bạn định sử dụng WebControl, thì ai thực hiện điều khiển của bạn có thể sử dụng CssClass trên điều khiển đó. Tất cả các bà mẹ như cỡ chữ, màu nền đều là thùng rác, vì bạn nên luôn sử dụng tệp .css với kiểu và ID trong mã của mình. – PositiveGuy

+0

Khi bạn đang tạo một điều khiển tùy chỉnh yêu cầu ít hoặc không có giao diện người dùng, thì bạn nên xuất phát từ lớp Điều khiển. Nếu điều khiển của bạn yêu cầu sự hỗ trợ UI mở rộng, thì bạn nên lấy được từ WebControl. Ok, nhưng tôi có thể thấy với quan điểm của tôi, rằng lý do duy nhất tôi muốn WebControl là cung cấp thuộc tính cssClass. Vì vậy, nếu điều khiển của bạn đang khạc ra cho phép nói một số nội dung giao diện người dùng dựa trên hệ thống CMS và bạn không cần phải chỉ định cssClass (vì bạn đang thực hiện điều đó thông qua logic trong điều khiển máy chủ tùy chỉnh của bạn sau hậu trường) thì không sử dụng WebControl – PositiveGuy

0

Vì vậy, bạn có câu hỏi để hỏi không? Tôi nghĩ rằng sự khác biệt giữa hai đã được giải quyết tốt trong bài viết MSDN.

+0

Chỉ cố gắng xác minh xem có thực sự có lợi ích nào khác khi sử dụng WebControl ngoài việc nhận thuộc tính cssClass không. Và kế thừa từ Điều khiển không có nghĩa là bạn sẽ không tạo kiểu cho nó, bạn luôn có thể sử dụng kiểu đồng bằng trong các phương thức kiểm soát tùy chỉnh của mình. Thực sự tôi chỉ không nhìn thấy một lợi ích để sử dụng WebControl trừ khi bạn cuối cùng cần thuộc tính cssClass có sẵn là những gì tôi đang kết luận cá nhân. – PositiveGuy

+0

Đây là vấn đề, tất cả những gì đã được nhổ lại là bài viết MSDN mà tôi vừa đọc. Tôi hiểu rằng, nhưng tuyên bố này ở đây: "Khi bạn đang tạo ra một điều khiển tùy chỉnh đòi hỏi ít hoặc không có giao diện người dùng, sau đó bạn nên lấy được từ lớp kiểm soát". Điều đó có nghĩa là gì, rằng bạn không đi để render HTML (UI) hoặc chúng có nghĩa là nếu bạn không cần STYLES. đó là một sự lựa chọn nghèo nàn của các từ trên trang đó. Câu đó làm cho nó nói như thể bạn không thể hiện bất kỳ giao diện người dùng nào. Chúng có nghĩa là tạo kiểu tóc. – PositiveGuy

+0

Nó tiếp tục nói "Nếu điều khiển của bạn hiển thị phần tử giao diện người dùng (UI) hoặc bất kỳ phần tử hiển thị nào khác trên máy khách, bạn sẽ lấy được quyền kiểm soát của mình từ System.Web.UI.WebControls .. ::. WebControl". Không đúng. Trong trường hợp của tôi nó sẽ nhổ ra rất nhiều UI ... nhưng người dùng không nên thêm bất kỳ lớp css vào nó. – PositiveGuy

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