2009-06-01 42 views
7

Tôi tự hỏi liệu có ai có kinh nghiệm chuyển đổi các điều khiển của Người dùng sang các điều khiển Web không?Chuyển đổi các điều khiển của người dùng sang các điều khiển máy chủ

Lý tưởng nhất, tôi muốn giảm tải một số công việc thiết kế cho những người khác, những người sẽ cho tôi đặt độc đáo Điều khiển người dùng. Sau đó, tôi có thể trải qua quá trình chuyển đổi, biên dịch, thử nghiệm và triển khai.

Cho đến khi MS đi kèm với tùy chọn "Chuyển đổi sang kiểm soát máy chủ" ma thuật, có vẻ như tôi khá mắc kẹt với việc viết lại từ đầu. Ý tưởng nào?

+0

Điều gì sẽ xảy ra với việc sử dụng các điều khiển của Người dùng? Nếu bạn cần chia sẻ logic, bạn có thể có các tệp .ascx kế thừa từ một lớp cơ sở mà bạn định nghĩa trong một thư viện lớp, để logic có thể dễ dàng được tái sử dụng; trong khi vẫn duy trì một thiết kế hình ảnh linh hoạt có thể dễ dàng thay đổi. – driis

+0

Tôi đã tìm kiếm hàng giờ và cố gắng rất nhiều. Điều duy nhất làm việc cho tôi là bài viết này https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/. Nó nói 'tự chứa' với các hạn chế nhất định. Tôi đã sử dụng một dự án 'WebSite' và phải đặt mã bên trong vào tệp ascx. Vì vậy, về cơ bản tôi chỉ có một tập tin duy nhất còn lại để kiểm soát người dùng. – djmj

Trả lời

6

Có lý do nào khiến bạn phải chuyển đổi các điều khiển người dùng này thành điều khiển máy chủ không? Hãy nhớ rằng có thể compile a user control into an assembly.

+0

Cũng http://msdn.microsoft.com/en-us/library/aa479318.aspx – Loofer

+0

Lưu trữ web (do trang web ngoại tuyến): http://web.archive.org/web/20120328081058/http://www .nathanblevins.com/2008/06/biên dịch-a-web-người dùng-điều khiển-thành-a-dll-net-c / – Caramiriel

1

Bạn đã đúng ở đây không có viên đạn ma thuật nào ở đây nhưng vì bạn đã có một điều khiển người dùng không khó.

  1. Hãy chắc chắn rằng tất cả các thuộc tính, sự kiện, vv được thiết lập trong các mã sau vì bạn sẽ không có bất kỳ dấu ấn lên khi bạn đã hoàn tất
  2. Tạo một Server Control mới
  3. Dán tất cả các xử lý sự kiện và tài sản thiết lập mã vào điều khiển mới
  4. override Render phương pháp để kiểm soát từng con gọi phương pháp RenderControl đi qua trong cung cấp HtmlTextWriter

    protected override void Render(HtmlTextWriter writer) 
    { 
        TextBox box = new TextBox(); 
        //Set all the properties here 
        box.RenderControl(writer); 
        base.Render(writer); 
    } 
    
0

Tôi đã tìm kiếm hàng giờ và tìm thấy nhiều blog về nó.

Điều duy nhất làm việc cho tôi là bài viết này https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/.

Nó cho biết khép kín với các giới hạn nhất định, nhưng nó không đề cập rằng codebehind phải được bao gồm trong tệp ascx.

tôi đã sử dụng một dự án trang web (ứng dụng không Web!) Và phải inline mã sau vào file ascx và chỉ sử dụng chỉ thị kiểm soát như:

<%@ Control Language="C#" ClassName="MyPackage.MyControl"%> 

Vì vậy, về cơ bản tôi chỉ có một đơn tệp còn lại để điều khiển người dùng. Khi codebehind là một tập tin riêng biệt tất cả các điều khiển của nơi null khi tôi tham chiếu dll cuối cùng.

Tôi cũng đã thử sử dụng http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-file nhưng không thể tìm thấy tệp ascx.

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