ASP.Net Custom Control отображает код JavaScript в тегах Head? - PullRequest
0 голосов
/ 03 февраля 2011

Я создаю пользовательский элемент управления, и мне было интересно, можно ли отобразить какой-либо JavaScript в тегах заголовка страницы, на которой он размещен?Я думаю, что мне нужно будет использовать метод FindControl, но я не уверен, что мне нужно привязать к.Я думаю, что объект страницы?Дайте мне знать, если я думаю в правильном направлении или есть другой вариант.

Моя единственная забота в связи с вышеупомянутой идеей состоит в том, как мне отобразить весь мой контент, помещая некоторый код в теги head?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011
protected override void OnPreRender(EventArgs e) {
    base.OnPreRender(e);

    string includeTemplate = "<link rel='stylesheet' type='text/css' href='{0}' />\n";
    string includeLocation = Page.ClientScript.GetWebResourceUrl(GetType(), "Path.To.Resources.css");
    LiteralControl include = new LiteralControl(String.Format(includeTemplate, includeLocation));
    Page.Header.Controls.Add(include);
}

Я использую это в моей управляющей библиотеке для включения css и javascript-файлов.

1 голос
/ 03 февраля 2011

Да, если вы сделаете:

this.Page.Header

, это даст вам доступ к элементу head, и вы можете динамически добавлять к нему теги скрипта.Я думаю, что я использовал LiteralControl для статического добавления тега сценария, и я сделал это в событии Load, которое мне хорошо работало.Я также видел такой подход: http://forums.asp.net/t/1306647.aspx

Вы можете также добавить не к голове, а в теле сценарии, используя альтернативно методы ScriptManager.RegisterClientScriptBlock или RegisterClientScriptInclude, если используется AJAX (Page.ClientScript имееттакие же методы тоже доступны).

HTH.

...