2011-08-03 7 views
2

私はasp.net 4とc#を使用します。Page</head>動的に

私はWebからWeb User Controlを持っています。 Webユーザーコントロールを組み込む場合、最終的に生成されるページのタグ内にプログラム的にいくつかのスクリプトを含めることもできます。

どうすればいいですか? ScriptManagerがこれに役立つかもしれませんか?

私はコードのサンプルを提供してください私はかなりあなたの時間のおかげでこれを開発しています!

答えて

5

ピーターの答えはhead要素ページに追加しませんが。この記事を見てみましょう:

http://weblogs.asp.net/johnkatsiotis/archive/2008/08/08/add-scripts-to-head-dynamically.aspx

それは、拡張メソッドを使用したヘッド素子にスクリプトを追加するにはすてきなきれいな方法を提供します。

+0

サーバ側のコードで頭に何かを動的に追加するための重要な点の1つは、ヘッド要素にrunat = "server"を追加することです。 – joelmdev

3

ClientScriptManagerのRegisterClientScriptBlockを見てください。 MSDNから

... 
ClientScriptManager cs = Page.ClientScript; 

// Check to see if the client script is already registered. 
if (!cs.IsClientScriptBlockRegistered(csType, csName)) 
{ 
    StringBuilder csText = new StringBuilder(); 
    csText.Append("<script type=\"text/javascript\"> function DoClick() {"); 
    csText.Append("Form1.Message.value='Text from client script.'} </"); 
    csText.Append("script>"); 
    cs.RegisterClientScriptBlock(csType, csName, csText.ToString()); 
} 
... 
+0

ありがとうピーター私はマスターページ内で使用している問題はまだありますが、有線のものはマスターページのないWebフォームからです。スクリプトがうまくいきます。mpがあれば追加できません。 ...どのようにそれを修正するための任意のアイデア?これにお時間をいただきありがとうございます。 – GibboK

1

これは古い質問ですが、はるかに簡単な方法があります。

これ試してみてください:あなたは<head>の特定のインデックスにスクリプトを追加したい場合は、インデックス0はまた<head>

のトップに等しい

AddAt(index, new LiteralControl(...))を使用することができます

Page.Header.Controls.Add(
    new LiteralControl(
     "<script>alert('Literal Added to <Head>.');</script>" 
    ) 
); 

を、joelmdevあなたの頭のタグにrunat="server"を追加する必要があるコメントに記載例<head id="head1" runat="server">