C#のRegisterStartupScriptでJavaScript出力
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2010-04-09
ASP.NET における JavaScript は、aspx ファイル内に埋め込むよりも C# や VB.NET のコードから出力する方が好ましいという記述を見つけた。JavaScript も外部ファイル化してしまえば気にすることもないのだろうけど、動的に C# などのコードから値を埋め込みたい場合は、確かにそっちの方が都合がいいですね。実際に、ASP.NET の Page クラス(System.Web.UI)には RegisterStartupScript メソッドがあり、これに JavaScript の記述を渡せば、HTML 上で </form> タグの直前に出力してくれます。
さて、そんな RegisterStartupScript メソッドですが、C# での使い方は下記の通り。
[C#のコード]
string js = "";
js += "<script language='JavaScript'>";
js += "window.open('[URL]', 'sample')";
js += "</script>";
RegisterStartupScript("startup", js);
[RegisterStartupScriptのメソッド]
public virtual void RegisterStartupScript(
string key, // スクリプトブロックを識別する一意のキー
string script // クライアントに送られるスクリプトの内容
)
しかし、現在はこの引数に対応した方法は推奨されていないので、推奨されているメソッドに対応させます。このメソッドは Page クラスではなく、ClientScriptManager クラスを使用します。
[C#のコード]
string js = "";
js += "<script language='JavaScript'>";
js += "window.open('[URL]', 'sample')";
js += "</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "startup", js);
[Page.ClientScript.RegisterStartupScriptのメソッド]
public void RegisterStartupScript(
Type type, // 登録する起動スクリプトの型
string key, // 登録する起動スクリプトのキー
string script // 登録する起動スクリプトリテラル
)
関連記事
上記の記事に関連する記事(最新の10件)です。


