Page.Header.Controls.Add (control) добавляет элементы управления к <body>, а не <head> - PullRequest
4 голосов
/ 16 декабря 2011

Я пытаюсь добавить код во время выполнения к элементу head. Когда я делаю это на странице загрузки пользовательского элемента управления на странице:

HtmlGenericControl hc = new HtmlGenericControl();
hc.InnerHtml = GetParameter("HeaderCode");
Page.Header.Controls.Add(hc);

Элемент управления попадает в тег body как первый дочерний элемент. Например:

...
</head>
<body>
<span><meta>Test</meta></span>
...

Насколько я понимаю, Page.Header должен быть элементом Head. На странице aspx заголовок имеет атрибут runat="server".

Есть идеи, как вставить строку в элемент <head>?

Ответы [ 2 ]

8 голосов
/ 16 декабря 2011

Элемент head может иметь ограничения по типу контента.Когда мы вставляем JavaScript в заголовок, мы делаем это с помощью LiteralControl.

Например:

Page.Header.Controls.Add(New LiteralControl("<script language='javascript' type='text/javascript'>alert('test');</script>"))
0 голосов
/ 09 октября 2013

Попробуйте код ниже, чтобы добавить JavaScript, CSS или любые другие ресурсы, такие как метатеги.Я успешно реализовал этот код на своем веб-сайте:

HtmlGenericControl my_js = new HtmlGenericControl("script");
            my_js.Attributes["async"] = "async";
            my_js.Attributes["type"] = "text/javascript";
            my_js.Attributes["src"] = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js";
            Page.Header.Controls.Add(my_js);

Вам необходимо использовать пространство имен: «using System.Web.UI.HtmlControls» для использования HtmlGenericControl.

...