В методе Page_Load элемента управления вы можете зарегистрировать свой javascript для вывода (после подтверждения того, что он еще не зарегистрирован).
например.,
ClientScriptManager script = Page.ClientScript;
if (!script.IsClientScriptIncludeRegistered("AlertHello"))
{
script.RegisterClientScriptInclude("AlertHello", "Public/AlertHello.js");
}
ПРИМЕЧАНИЕ. Вы можете использовать .RegisterClientScriptBlock()
, если хотите иметь блок JS вместо отдельного файла.
Однако, это выводит тег script вскоре после открытия тега формы страницы. Чтобы вывести ваш скрипт ближе к концу страницы (т. Е. Непосредственно перед закрывающим тега формы), используйте методы .RegisterStartupScript()
.
ClientScriptManager script = Page.ClientScript;
if (!script.IsStartupScriptRegistered("StartupAlert"))
{
script.RegisterStartupScript(this.GetType(), "StartupAlert",
"<script type='text/javascript' src='Public/Alert.js'></script>");
}
Предположим, что он вам абсолютно необходим в определенном месте, однако вы можете добавить статическое (или «совместно используемое» в VB.NET) свойство только для чтения, которое возвращает тег скрипта, и логическое свойство, которое сообщает элементу управления, вывести тег сценария. В этом случае в вашем ASPX вы можете сделать что-то вроде ...
<body>
<!-- any place -->
<uc1:myControl ID="myControl1" runat="server" jsOutput="False" />
<!-- elsewhere -->
<asp:Literal ID="litJS" runat="server" OnLoad="litJS_Load" />
</body>
Затем запрограммируйте litJS_Load
, чтобы установить для свойства Text отправителя строку, возвращаемую статическим свойством класса myControl.