ASP.Net избегать нескольких блоков стиля и скрипта в пользовательском элементе управления - PullRequest
0 голосов
/ 16 сентября 2009

Я разрабатываю собственный элемент управления со своим собственным стилем и блоком скриптов внутри ascx-файла.
Все работает нормально, но если я использую свой элемент управления внутри моей aspx-страницы более одного раза, блоки script и style также повторяются.

Как этого избежать?

Ответы [ 4 ]

0 голосов
/ 16 сентября 2009

Спасибо за все ответы. Я только что создал «вспомогательный» элемент управления, который создает мои стили и сценарии, которые я помещаю только один раз на мою страницу aspx. Поэтому я могу добавить несколько экземпляров моего фактического элемента управления без избыточного кода.

0 голосов
/ 16 сентября 2009

Сценарий

Вы можете использовать объект ClientScript для программной регистрации скрипта в Page_Load вместо записи в aspx:

if (!ClientScript.IsClientScriptBlockRegistered("myScript"))
{
    ClientScript.RegisterClientScriptBlock(GetType(), "myScript", "//the javascript code...", true);
}

Стили

Что касается стилей, я не знаю, есть ли какие-нибудь механизмы для достижения этого. Может быть, вы можете использовать механизм Theme. Я сам этим не пользовался, поэтому не знаю, как это работает ...

0 голосов
/ 16 сентября 2009

Единственный способ сделать это - разделить пользовательский элемент управления на подэлементы управления.

Создание элемента управления «Body» в качестве элемента управления без стилей и без сценариев. Затем создайте элемент управления «Дизайнер», который будет использоваться для всасывания нескольких элементов управления «Тело». Затем вы можете добавить элемент управления «Designer» на страницу aspx один раз.

Если вы не знаете, сколько частей "Body" вам нужно во время компиляции, добавьте параметр в элемент управления "Designer", который позволяет динамически добавлять "Основные части" из кода во время выполнения.

Кстати, если вы никогда раньше не использовали динамические элементы управления, получайте удовольствие!

0 голосов
/ 16 сентября 2009

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

Редактировать: В моем ответе предполагается, что вы жалуетесь на повторяющиеся ссылки на файлы скриптов / стилей. Однако, если вы говорите о полных сценариях внутри элемента управления, см. _rick_schott's answer .

...