Как встроить пользовательский элемент управления в автономную сборку в VS2008? - PullRequest
2 голосов
/ 21 июля 2009

В частности, что мне нужно знать о том, как сделать это в Visual Studio 2008, которая отличается от VS2005? Я нашел приличное количество ссылок для подобных вещей в VS2005, таких как

но даже справка Microsoft, похоже, мало что говорит о VS2008. Этот вопрос связан с вопросом, который я задал ранее: найден здесь .

Пройдя еще один шаг, когда мне удастся собрать одну из этих сборок (предположительно, DLL), что кому-то еще нужно будет сделать с моей DLL, чтобы включить ее (как одну страницу или, возможно, подраздел) в их сайт ASP.NET?

РЕДАКТИРОВАТЬ: еще больше поиска это , который выглядит (но не совсем), как то, что я пытаюсь выяснить. Или:

  • Я пишу код как для веб-сайта ASP.NET , так и для веб-приложения, а затем каким-то образом передаю его владельцу основного веб-сайта ASP.NET, или
  • Я только пишу код для Приложения (таким образом создавая пользовательский элемент управления), и каким-то образом владелец основного веб-сайта ASP.NET помещает мой пользовательский элемент управления в свой сайт.

Надеюсь, это проясняет то, что я спрашиваю.

Ответы [ 3 ]

1 голос
/ 29 июля 2009

Я наконец понял, как сделать именно то, что мне нужно. Он довольно красиво изложен здесь (хотя эта статья претендует на применение к VS2005), но в итоге сводится к нескольким вещам:

  1. Создайте пользовательский элемент управления на веб-сайте ASP.NET, а НЕ в веб-приложении.
  2. Дайте объявлению пользовательского элемента управления имя класса, включающее пользовательское пространство имен, как описано в конце шага 1 на связанной странице.
  3. После написания и тестирования пользовательского элемента управления создайте сборку DLL, как описано в шаге 3
  4. Используйте его, как описано в шаге 5.

Самая большая проблема, с которой я столкнулся раньше, заключалась в том, что я создал пользовательский элемент управления внутри веб-приложения ASP.NET вместо веб-сайта. Я потратил так много часов на то, чтобы не думать об этом, надеюсь, этот ответ спасет, по крайней мере, еще один новый ASP.NET, потративший несколько часов на изучение терминологии и незначительных различий. Ура!

0 голосов
/ 22 июля 2009

Это может показаться глупым вопросом, но кроме приятного интерфейса времени разработки, какие преимущества вы получаете от использования этого в качестве пользовательского элемента управления, а не (хотя и более сложного) метода написания элемента управления сервером , что даст вам именно то, что вы просите здесь - простой способ развернуть элемент управления?

Предполагая CSS-подход к отображению элемента управления, создать фактический элемент управления довольно просто, используя Panels для ваших контейнеров (визуализируется как div), Labels, Literals и т. Д.

Некоторые вещи должны быть установлены в правильной точке жизненного цикла элемента управления, например вам нужно установить AssociatedControlId метки в ClientID элемента управления вводом, но это не установлено в CreateChildControls, его нужно установить позже.

0 голосов
/ 22 июля 2009

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

Обычно лучшая идея - добавить ее в папку, относящуюся к вашему проекту (я обычно использую «_Libraries»), так как вам потребуется развернуть ее до конечного места назначения.

EDIT

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

Если вы хотите, чтобы пользовательский элемент управления был распространяемым, вы должны построить макет полностью в коде, либо создав его, добавив компоненты в коллекцию Controls () вашего usercontrol в течение жизненного цикла (обычно Init () или CreateChildControls ()) или переопределив метод Render ().

Тогда любой может добавить один из ваших пользовательских элементов управления, используя директиву <@Register TagPrefix="mycontrols" namespace="My.UserControls" Assembly="My.UserControls" /> и тег asp <% mycontrols:mydropdownlist %>, чтобы поместить его на свою страницу.

...