Có thể tạo các thư viện lớp có chứa UserControls để tôi có thể tái sử dụng chúng không? Nếu vậy, làm thế nào? Là đánh dấu biên dịch với các .dll? Cảm ơn vì bất kì sự giúp đỡ!Thư viện lớp ASP.NET UserControl
Trả lời
Cập nhật: tôi đã đúng về gợi ý của tôi về cách sử dụng điều khiển người dùng trước khi biên soạn như bạn làm một điều khiển người dùng.
Đối với một từng bước trên như thế nào, thấy Turning an .ascx User Control into a Redistributable Custom Control
Không cần cho bất kỳ.tập tin ascx trong dự án nơi bạn sẽ sử dụng nó, do đó, điều này phù hợp chính xác những gì bạn đang tìm kiếm.
Điều khiển người dùng không được sử dụng lại trên các trang web, thay vào đó hãy sử dụng custom server controls.
Bạn có thể soạn các điều khiển máy chủ bằng các điều khiển hiện có và thiết lập tất cả để bạn có thể tạo kiểu thông qua css.
Nếu bạn vẫn đang sử dụng phương pháp kiểm soát người dùng, hãy thử những gì Bob đã đề cập trong câu trả lời. Tôi đã không thực hiện nó với điều khiển người dùng, nhưng tôi mong đợi để có thể sử dụng đầu ra của phương pháp đó như bạn sẽ sử dụng một điều khiển máy chủ tùy chỉnh.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls"%>
...
<aspSample:WelcomeLabel Text="Hello" NameForAnonymousUser="Guest"
ID="WelcomeLabel1" runat="server" BackColor="Wheat" ForeColor="SaddleBrown" />
Ps. nếu điều đó không có tác dụng, liên kết mà anh ấy cung cấp sẽ cho bạn biết sao chép các tệp ascx, do đó, đó sẽ không phải là những gì bạn đang tìm kiếm i.e.try trên & nếu không tuân theo các điều khiển máy chủ tùy chỉnh.
Thay vào đó, bạn có thể muốn xem xét Server Controls. AFAIK bạn không thể biên dịch User Controls thành một DLL duy nhất.
Bạn có thể biên dịch cả hai số UserControl
s và Page
vào thư viện lớp vì cuối cùng, đây là những gì xảy ra sau khi trang web của bạn được biên dịch just in time. Quá trình này là một chút liên quan bởi vì thực sự UserControl
s và Page
không có nghĩa là được sử dụng trên các ứng dụng.
Từ MSDN:
Các UserControl cho bạn khả năng để tạo ra các điều khiển có thể được sử dụng trong nhiều địa điểm trong một ứng dụng hoặc tổ chức
http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx
Phương pháp ưa thích cho các điều khiển sẽ được sử dụng trên các ứng dụng sẽ tạo ra custom web server controls.
Nếu bạn thực sự muốn gắn bó với UserControl
s tuy nhiên, quá trình cơ bản để có được chức năng này như sau:
- Tạo mới web application project.
- Phát triển reuseable
UserControl
s. - Xuất bản trang web dưới dạng trang web không thể cập nhật *. (bỏ chọn Cho phép trang web này có thể cập nhật)
Sao chép thư viện được biên soạn từ thư mục bin và ascx tệp khi cần từ trang web đã xuất bản vào trang web mới.
- Tùy chọn không thể cập nhật là điều mang lại đánh dấu vào hội đồng. Đây là một bước quan trọng.
Vâng, như số điểm bốn tiểu bang, bạn không cần phải sao chép ascx tập tin. Đánh dấu sẽ được chứa trong thư viện lớp học và ascx thực sự sẽ trống. Không có cách nào để tránh điều này (trừ khi bạn sử dụng custom web server controls) vì UserControl
s được thêm vào Page
s thông qua tên tệp của chúng.
Tất cả điều này được ghi chép lại một cách chi tiết hơn qua tại MSDN,
Tôi đã làm theo các bước, nhưng có vấn đề tích hợp lắp ráp vào trang web của tôi. Tôi đặt tùy chọn "unupdateable", và tôi đã tham khảo các tập tin .dll trong dự án mới của tôi. Tôi không thể tìm ra cách thực sự khai báo nó trên trang của mình. –
Có phải là đay cho tôi, hoặc không phương pháp này VẪN yêu cầu bạn triển khai các tập tin đánh dấu .ascx? "1.Sao chép các tệp .aspx/.ascx thích hợp từ [...]" – Radu094
được xây dựng. Bạn vẫn cần tệp vật lý ở đó, chúng sẽ trống. – Bob
Nếu chúng ta đang nói về biểu mẫu web, Câu trả lời là không. Đánh dấu (nội dung tập tin .ascx) không được biên dịch vào dll. Công cụ ASP.NET dự kiến sẽ tìm thấy tệp này trong hệ thống tệp, cùng với ứng dụng web. Vì vậy, nó không thể tạo ra một DLL mà bạn chỉ có thể phân phối lại hoặc chia sẻ.
Nếu bạn muốn tạo điều khiển có thể được chia sẻ trên các ứng dụng web, bạn có thể tạo điều khiển tùy chỉnh thay thế, nhưng sau đó bạn phải mã HTML trong mã .net (ưu tiên sử dụng các lớp thích hợp cho tác vụ thay vì chỉ cần tạo html trong văn bản), có thể trở nên khá xấu nếu kiểm soát lớn.
Cá nhân, tôi nghĩ rằng điều này khá khó chịu vì đó là cách này. Tuy nhiên, tôi nghĩ rằng nếu bạn đang sử dụng ASP.NET MVC, có một số khả năng (tùy thuộc vào công cụ xem của bạn), nhưng tôi không có nhiều kinh nghiệm với MVC.
Câu trả lời không phải là không, hãy xem câu trả lời của tôi. – Bob
@bob, câu trả lời của bạn không cung cấp thư viện lớp (như trong một dll) với các điều khiển người dùng được nhúng, nhưng một loạt các tệp dll và các tệp ascx tương ứng. Bạn vẫn cần phải đặt các tệp đó trong ứng dụng web đích để có thể sử dụng các điều khiển. Vì vậy, câu trả lời cho câu hỏi, vì nó đã được phrased, là không. Câu trả lời của bạn có thể là một lựa chọn tốt. – Pete
Nội dung tập tin được biên dịch vào dll. Bạn cần tệp ascx làm trình giữ chỗ. Có nhiều DLL chỉ phụ thuộc vào cấu trúc của dự án của bạn. Không có lý do tại sao nó không thể được kết hợp thành một. – Bob
Có vẻ như điều khiển máy chủ tùy chỉnh là những gì bạn đang tìm kiếm.
Nếu điều khiển của bạn là sự kết hợp của các điều khiển máy chủ khác (ví dụ: hộp văn bản và nút điều khiển ngày), thì bạn có thể xem CompositeDataBoundControl và CompositeControl - đây là những cách thuận tiện để làm việc với loại điều này.
Hãy coi chừng, tuy nhiên, rất dễ nhầm lẫn với cách thức hoạt động của quá trình tái hydrat hóa chu trình/chế độ xem trang. Tôi đã mất khá nhiều thời gian cho việc này, do sự hiểu lầm tinh tế về cách nó hoạt động.
http://aspnetresources.com/blog/composite_databound_control.aspx
Bạn có thể phục vụ Điều khiển người dùng từ dll. Bạn sẽ chỉ cần tạo một VirtualPathProvider tùy chỉnh để tải các điều khiển. Đây là điều cần thiết những gì SharePoint làm.
Dưới đây là một bài báo từ Microsoft giải thích quá trình:
http://support.microsoft.com/kb/910441
Bạn cũng có thể thực hiện tìm kiếm cho 'VirtualPathProvider'.
Ví dụ này tải mã từ cơ sở dữ liệu, nhưng bạn có thể sửa đổi nó để tải mã từ assembly như một tài nguyên nhúng. Chúng tôi đang làm điều này tại công ty của tôi để chia sẻ trang Master trên nhiều trang web và appdomains.
Tuy nhiên, một báo trước. Điều này sẽ không hoạt động trong môi trường tin cậy trung bình. Vì vậy, nếu bạn đang có kế hoạch triển khai này vào một môi trường lưu trữ được chia sẻ, hãy chắc chắn để làm một bài kiểm tra trên máy chủ của bạn để xem nếu nó sẽ làm việc đầu tiên.
- 1. ASP.NET - Sử dụng ScriptManager trong tham chiếu thư viện lớp
- 2. ASP.NET giải pháp với dự án thư viện lớp
- 3. Asp.net Usercontrol LoadControl Issue
- 4. Thuộc tính UserControl asp.net
- 5. HtmlEncode từ Thư viện Lớp
- 6. Membership.CreateUser() trong Thư viện Lớp
- 7. UserControls trong Thư viện Lớp
- 8. ASP.NET UpdatePanel lỗi tham khảo thư viện
- 9. Thêm từ điển tài nguyên vào thư viện usercontrol trong wpf
- 10. ASP.NET UserControl của Không khởi Child Controls
- 11. ASP.NET - Validating Control Bên trong UserControl
- 12. ASP.NET: Gọi hàm trong MasterPage qua UserControl
- 13. Sử dụng ASP.NET Web Forms UserControl trong ASP.NET MVC?
- 14. Nhập lớp thư viện trong Python
- 15. API plugin và API thư viện lớp
- 16. Sử dụng app.config với thư viện lớp
- 17. Truy cập ViewContext từ thư viện lớp
- 18. Tham chiếu RoleProvider trong thư viện lớp
- 19. phân lớp thư viện mã nguồn mở
- 20. ASP.NET MVC = ASP cổ điển với thư viện lớp .NET. Có thật không?
- 21. Thư viện điều khiển người dùng Web ASP.NET
- 22. Thư viện lớp không nhận ra lớp CommandManager
- 23. đường dẫn đến tập tin trong lớp học thư viện
- 24. lớp cơ sở chung cho WinForm UserControl
- 25. Thư viện dịch vụ WCF và loại dự án thư viện lớp học
- 26. Tạo Thư viện ảnh riêng tư Sử dụng Asp.Net MVC
- 27. Thư viện .NET hoặc ứng dụng asp.net cho Amazon S3
- 28. Tùy chỉnh Cấu hình Thư viện Lớp Di động .NET?
- 29. Cách lấy thư mục hiện tại trên thư viện lớp học?
- 30. Thêm tham chiếu System.Web.Script vào thư viện lớp
@Mike C. đã thêm cập nhật vào câu trả lời của tôi, hãy kiểm tra. – eglasius