Я хочу создать веб-элемент управления, в котором я могу регистрировать сценарии запуска клиента, встроенные в мой aspx, потому что я ненавижу регистрацию в программном коде!
Пример того, что у меня есть:
<Ben:StartupScript runat = "server">
var form = document.getElementById("<% =form1.ClientID %>");
</Ben:StartupScript>
В настоящее время я переопределяю метод OnPreRender элемента управления, отображая содержимое элемента управления в строку, а затем вручную регистрирую эту строку в качестве сценария запуска с помощью ClientScript.RegisterStartupScript на Page. Я также переопределяю метод Render, чтобы не отображать элемент управления. Я также должен отметить, что у меня для атрибута ParseChildren установлено значение false, а для атрибута PersistChildren установлено значение true.
Кажется, все работает хорошо, но мой элемент управления позволяет использовать другие веб-элементы управления внутри него (например, Button). Помимо того, что это не интуитивно, это может привести к ошибкам во время выполнения. Я хотел бы иметь возможность очистить элементы управления, но это невозможно из-за блока кода <% ... %>.
Итак, можно ли запретить разработчикам встраивать дочерние элементы управления, по-прежнему разрешая блоки кода?
Кроме того, хороша ли эта идея или она в корне ошибочна? Ржу не могу.
Огромное спасибо,
Бен





это звучит как хорошая идея, но если вы потратите слишком много времени на борьбу с унаследованным / стандартным поведением, это может быть больше проблем, чем того стоит
если это одноразовая проблема, дешевое решение - просто встроить ваши скрипты в заголовок главной страницы ;-)
с другой стороны, может быть полезно разрешить разработчикам встраивать свои собственные сценарии в качестве дочерних элементов вашего веб-элемента управления.
Если вы используете главные страницы, добавьте еще один элемент управления в свой раздел. Таким образом, вы можете легко добавить css / js в заголовки на дочерних страницах.
ClientScript.RegisterScript в основном предназначен для пользовательских / серверных элементов управления,