2011-12-16 35 views
4

実行時にhead要素にコードを追加しようとしています。私は、ページ内のユーザーコントロールのページのロード中にこれを行うと:Page.Header.Controls.Add(コントロール)は、コントロールを<body>に追加していません<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>要素に注入できますか?

+0

例の場合、GetParameterは値の文字列を返しています。 " Test" – Jbecwar

答えて

8

head要素にはコンテンツの種類に制限がある場合があります。ヘッダにjavascriptを挿入するときは、LiteralControlを使ってjavascriptを挿入します。例えば

Page.Header.Controls.Add(New LiteralControl("<script language='javascript' type='text/javascript'>alert('test');</script>")) 
+0

これは問題でした。 HtmlGenericControlを追加すると、それをspanタグでラップします。 ChromeとIEはスパンタグを本体に移動すると、ページソースを表示して要素を調べるかどうかを確認できます。ご協力いただきありがとうございます。 – Jbecwar

0

には、JavaScript、CSSや、メタタグなどの他のリソースを追加するためのコードの下に試してみてください。私は正常に私のウェブサイトにこのコードを実装している:「を使用してSystem.Web.UI.HtmlControlsを」HtmlGenericControlを使用する:

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); 

あなたが名前空間を使用する必要があります。

関連する問題