2010-06-24 63 views
9

Tôi đã sử dụng ASP.NET (C#) trong hai năm qua. Tôi đã học được rất nhiều nhưng vẫn còn nhiều điều để học hỏi :)Sử dụng Điều khiển Người dùng Web thay vì Biểu mẫu Web

Tôi đã sử dụng MasterPages, 'Web Controls tài' cho những thứ như tiêu đề, chuyển hướng, footers, vv

Một điều tôi chưa bao giờ thực sự hiểu là thực hành sử dụng 'Điều khiển người dùng web' cho nội dung và logic của bạn;

Home.aspx ------ Home.ascx 
AboutUs.aspx ----- AboutUs.ascx 
Ordering.aspx ---- Ordering.acsx 

Tôi đã làm việc với một vài dự án trong vài tháng qua sử dụng cấu trúc này. Tôi biết rằng đây thực sự là thực tế phổ biến nhưng tôi không thực sự hiểu được những lợi ích đầy đủ.

Tôi nhớ khi tôi thử phương pháp này trước đây và kết thúc có vấn đề với các điều khiển như Gridview ... một khi tôi lấy tất cả logic ra và đặt nó vào một trang .aspx mọi thứ hoạt động tốt. Tôi nhận ra bây giờ có lẽ tôi cần phải thêm GridView vào bộ sưu tập ViewState ... nhưng điều này chỉ củng cố khó khăn của tôi để hiểu tại sao cách tiếp cận này được sử dụng - cho vấn đề ViewState.

Tôi hoàn toàn hiểu những ưu điểm của 'Điều khiển người dùng Web' liên quan đến những thứ như Tiêu đề, menu, chân trang, v.v ... ở bất kỳ nơi nào liên quan đến trùng lặp nhưng các dự án tôi thấy có các trang/điều khiển khá cụ thể - các từ khác không được tái sử dụng ở bất kỳ nơi nào khác - trang aspx chỉ chứa một điều khiển (.ascx) với nội dung và logic và nó sẽ chỉ được sử dụng trên trang đó, không nơi nào khác.

Bỏ qua 'Sử dụng lại mã', cách tiếp cận này mang lại lợi ích gì?

Trả lời

2

Tôi nghĩ ví dụ của bạn về PageA.aspx -> PageA.ascx thực sự là một ví dụ tồi để làm nổi bật những lợi ích của điều khiển người dùng web. Hãy lùi lại một bước từ các ví dụ kiểm soát "trang" này và nghĩ về mục đích chính của điều khiển người dùng web. Chúng phục vụ mục đích đóng gói giao diện người dùng và chức năng trong một khối riêng biệt. Lợi ích lớn nhất trong quan điểm của tôi là biết rằng nếu tôi phát triển một cái gì đó giống như một hình thức bình luận một lần như một người sử dụng web kiểm soát và triển khai nó trên các trang web của tôi mà tôi có một mục duy nhất để cập nhật trong các giải pháp mà sẽ cập nhật tất cả trang đó tồn tại.

Một lợi ích ít rõ ràng hơn là nhiều hệ thống Quản lý nội dung như Umbraco sử dụng điều khiển người dùng web làm plugin. Bằng cách đó bạn có thể phát triển các plugin cho người dùng cuối/trình soạn thảo để chọn và đặt vào nội dung trang khi họ thấy phù hợp.

+0

Brian, việc đặt một thứ gì đó giống như một biểu mẫu nhận xét trong một điều khiển web có ý nghĩa tổng thể, tôi là tất cả để đặt các vật dụng như thế này trong điều khiển ... có lẽ những dự án mà tôi đã thấy toàn bộ trang được lồng bên trong một điều khiển web không phải là cách để làm mọi thứ sau khi tất cả? .... nếu Home.aspx chứa nhiều điều khiển như 'HomepageSlideshow.ascx', 'TwitterFeed.ascx', điều này sẽ có ý nghĩa hơn nhiều. – Dal

+0

@Dal, chính xác. Mặc dù về mặt kỹ thuật khác nhau một trang và một điều khiển người dùng web về cơ bản hành xử rất rất giống nhau và có cần phải là một mục đích thực sự để tiếp cận bạn đang mô tả đã được thực hiện. Nếu không có thêm chi tiết thì không có lợi ích rõ ràng –

4

Điều khiển người dùng được sử dụng bên trong các hình thức Web ... họ không được sử dụng để thay thế


Edit:

Trong trường hợp đó, tôi không thấy bất kỳ lợi ích trong việc sử dụng phương pháp đó (bên cạnh việc sử dụng lại). Nó thực sự có thể có nhiều chi phí hơn, vì các sự kiện chu kỳ trang phải được chuyển từ trang này đến điều khiển.

+0

Tôi biết điều đó - quan điểm của tôi là bạn sẽ có trang như Home.aspx và tất cả những gì có chứa là một điều khiển tùy chỉnh được gọi là Home.ascx ... Home.aspx gần giống như một trình bao bọc ... Tôi ' m cố gắng hiểu tại sao phương pháp này được sử dụng đặc biệt trong trường hợp không có yêu cầu tái sử dụng mã. – Dal

+1

Trong ví dụ cụ thể đó, không có bất kỳ lợi ích thực sự nào khi sử dụng điều khiển người dùng web. Có vẻ như Masterpages sẽ thích hợp hơn. –

+0

@Ed B - Đó chính xác là tình trạng khó khăn của tôi;) – Dal

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