2009-08-14 33 views
10

Chúng tôi có một loạt các điều khiển người dùng mà chúng tôi muốn rút ra khỏi một ứng dụng web và vào một thư viện/thư viện riêng biệt, và tôi nghĩ nó sẽ đơn giản như tạo thư viện lớp và kéo các tệp ascx và ascx.cs vào dự án và biên dịch một DLL để được sử dụng lại trong các ứng dụng của chúng ta.Thư viện điều khiển người dùng Web ASP.NET

Tuy nhiên, đây không phải là trường hợp.

Mục tiêu cuối cùng của chúng tôi là có một DLL phân phối duy nhất (tương tự như cách Telerik phân phối các điều khiển của chúng) mà chúng ta có thể ném vào bất kỳ ứng dụng web nào. Các bước ở đây: Turning an .ascx User Control into a Redistributable Custom Control là rất đơn giản để làm theo, tuy nhiên điều này dẫn đến nhiều tập tin có tên controlname.ascx.guid.dll, mà không phải là kết quả mong muốn. Tôi thậm chí không thể có được những điều này để làm việc anyways, kể từ khi chúng tôi có thêm các lớp học cần phải được biên dịch vào lắp ráp.

Có ai đã tạo thành công thư viện điều khiển người dùng web bằng .NET (chúng tôi đang sử dụng 3.5 tại đây) không? Tôi dường như không thể tìm thấy một hướng dẫn từng bước tốt đẹp.

Trả lời

7

Nếu bạn muốn chia sẻ kiểm soát giữa các dự án, kinh nghiệm của tôi đã chỉ ra rằng cách tốt nhất là xây dựng điều khiển máy chủ asp.net tùy chỉnh thay vì usercontrols. Các điều khiển của người dùng rất tốt cho việc chia sẻ trong cùng một dự án, nhưng không phải trên nhiều dự án.

Vì mục đích này, tôi đề nghị bạn xây dựng một bộ điều khiển máy chủ tùy chỉnh bên trong một thư viện lớp và sử dụng nó trên tất cả các dự án của bạn.

This book làm một công việc khá tốt trong việc giải thích những điều cơ bản của việc tạo ra máy chủ điều khiển

Edit:
Tôi hiện đang phát triển một thư viện kiểm soát máy chủ .net web. Tôi thực sự đã không làm theo bất kỳ hướng dẫn từng bước. Tôi chủ yếu xem xét việc sử dụng cuốn sách tôi đã đề cập ở trên và thư viện MSDN + Reflector, một công cụ tuyệt vời để kiểm tra các điều khiển máy chủ MS hiện có và học hỏi từ chúng.

+0

Vâng, chúng tôi đã xem xét điều đó. – Keith

+0

Vì vậy, bạn cân nhắc viết các điều khiển máy chủ tùy chỉnh? – Juri

+0

Có, nhưng vấn đề nằm trong thực tế là các điều khiển người dùng hiện đang sử dụng điều khiển asp.net trong suốt. Tôi không muốn viết HTML để mô phỏng một ListView mà chúng ta có trong một điều khiển người dùng, ví dụ. – Keith

9

Tôi nhận ra đây là một chủ đề cũ, nhưng nếu có ai đó đang tìm kiếm giải pháp để tạo thư viện điều khiển người dùng có thể sử dụng lại thì hóa ra nó khá đơn giản. Dưới đây là hai bước-by-step hướng dẫn tốt cùng với mã nguồn:

Từ MSDN: Turning an .ascx User Control into a Redistributable Custom Control

Từ Mã số dự án: Straight way to create ASP.NET user controls library

Các liên kết thứ hai cung cấp một giải pháp cho nhiều dlls được tạo ra bởi người đầu tiên liên kết.

2

Tôi tìm thấy hướng dẫn Creating and Using User Control Libraries nhưng có vẻ như một chút hack vì nó dựa trên sự kiện dòng lệnh sau khi xây dựng để sao chép các điều khiển người dùng từ dự án này sang dự án khác.

2

Hơi trễ, tôi thừa nhận.

Để tạo thư viện kiểm soát người dùng có thể sử dụng lại; tạo một dự án ứng dụng web mới, xóa tất cả các giàn giáo, thêm một (số) điều khiển người dùng (s). Tạo một dự án triển khai Web từ dự án ứng dụng Web, trong các thuộc tính WDP chọn tùy chọn Kết hợp tất cả đầu ra điều khiển và gán tên cho thư viện và đảm bảo rằng không cho phép trang web này có thể cập nhật được.

Tạo WDP và sử dụng Trình phản xạ để kiểm tra thư viện đã tạo; bạn sẽ thấy rằng nó chứa một không gian tên ASP và các loại bạn đã tạo cẩn thận đã được đổi tên thành tức là usercontrol_ascx. Trong (các) trang web mục tiêu của bạn, hãy thêm các tham chiếu vào cả hai tệp đầu ra từ WDP của bạn, thêm một hệ thống.web/trang/nút điều khiển để web.config bằng cách sử dụng không gian tên ASP và tên của hội đồng mà bạn đã xác định trong WDP.

Bây giờ khi bạn sử dụng thư viện trong một trang (ví dụ), bạn phải sử dụng bí danh mà bạn đã định nghĩa trong web.config và typename như đã thấy trong Reflector tức

<ucl:usercontrol_ascx ... /> 

tôi thấy nó hữu ích để thêm sự phụ thuộc vào (các) trang web trên WDP để WDP được xây dựng trước các trang web; bây giờ tôi có thể thay đổi các điều khiển người dùng trong WAP mà không cần phải nhớ xây dựng WAP trước khi xây dựng (các) trang web.

Tôi hy vọng rằng ai đó thấy điều này hữu ích vì nó làm tôi mất một vài sợi lông xám đến giai đoạn này và vẫn có VS làm điều 'tự động' của nó.

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