2009-06-01 4 views
7

Мне интересно, есть ли у кого-нибудь опыт преобразования пользовательских элементов управления в веб-элементы управления?Преобразование элементов управления пользователя в серверные элементы управления

В идеале, я хотел бы разгрузить часть проектных работ другим, кто дал бы мне красиво выложенные элементы управления пользователями. Затем я мог бы пройти процесс преобразования, компиляции, тестирования и развертывания.

До тех пор, пока MS не придумает волшебство «Преобразовать в серверный контроль», похоже, что я довольно хорошо застрял в переписывании с нуля. Есть идеи?

+0

Что было бы неправильно при использовании элементов управления пользователя? Если вам нужно обмениваться логикой, вы могли бы наследовать файлы .ascx из базового класса, который вы определяете в библиотеке классов, чтобы логику можно было легко использовать повторно; сохраняя гибкий визуальный дизайн, который можно легко изменить. – driis

+0

Я искал часы и много пробовал. Единственное, что сработало для меня, это статья https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/. Он говорит «автономный» с заданными ограничениями. Я использовал проект «WebSite» и должен был встроить код в файл ascx. Поэтому в основном у меня есть только один файл, оставшийся для пользовательского элемента управления. – djmj

ответ

6

Есть ли причина, по которой вы должны преобразовать эти элементы управления в серверные элементы управления? Помните, что возможно compile a user control into an assembly.

+0

Также http://msdn.microsoft.com/en-us/library/aa479318.aspx – Loofer

+0

Веб-архив (из-за автономного веб-сайта): http://web.archive.org/web/20120328081058/http://www .nathanblevins.ком/2008/06/компиляции а-веб-пользователь-контроль-в-а-длл-нетто-с / – Caramiriel

1

Вы правы, здесь нет волшебной пули, но поскольку у вас уже есть пользовательский контроль, это не так сложно.

  1. Убедитесь, что все свойства, события и т.д. устанавливаются в коде позади, так как вы не будете иметь никаких наценки, когда вы сделали
  2. Создать новый сервер управления
  3. Вставить все из обработки событий и свойство установка коды в новый элемент управление
  4. переопределения рендер методы для каждого дочернего элемента управления называют метод RenderControl прохождения в подаваемом HtmlTextWriter

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

Я искал часы и нашел много блогов об этом.

Единственное, что сработало для меня, было в этой статье https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/.

В нем указывается автономный с данными ограничениями, но он не упоминает, что код должен быть включен в файл ascx.

Я использовал проект веб-сайта (не веб-приложений!) И должен был инлайн приведен код в файл ASCX и использовать только директиву управления, как:

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

Поэтому в основном я просто один файл остается для пользовательского элемента управления. Когда codebehind был отдельным файлом, все элементы управления, где null, когда я ссылался на окончательную dll.

Я также пробовал http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-file, но с отражением файл ascx не удалось найти.