Конвертировать пользовательские элементы управления в серверные элементы управления - PullRequest
7 голосов
/ 01 июня 2009

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

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

Пока MS не придумает волшебную опцию "Преобразовать в управление сервером", похоже, я довольно хорошо застрял с переписыванием с нуля. Есть идеи?

Ответы [ 3 ]

6 голосов
/ 01 июня 2009

Существует ли причина, по которой вы должны преобразовать эти пользовательские элементы управления в элементы управления сервером? Помните, что можно скомпилировать пользовательский элемент управления в сборку .

1 голос
/ 01 июня 2009

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

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

    protected override void Render(HtmlTextWriter writer)
    {
        TextBox box = new TextBox();
        //Set all the properties here
        box.RenderControl(writer);
        base.Render(writer);
    }
    
0 голосов
/ 22 августа 2016

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

Единственное, что сработало для меня, была эта статья 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 был отдельным файлом, все элементы управления были нулевыми, когда я ссылался на последнюю DLL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...