ASP.NET における JavaScript は、aspx ファイル内に埋め込むよりも C# や VB.NET のコードから出力する方が好ましいという記述を見つけた。
JavaScript も外部ファイル化してしまえば気にすることもないのだろうけど、動的に C# などのコードから値を埋め込みたい場合は、確かにそっちの方が都合がいいですね。
実際に、ASP.NET の Page クラス(System.Web.UI)には RegisterStartupScript メソッドがあり、これに JavaScript の記述を渡せば、HTML 上で
タグの直前に出力してくれます。
さて、そんな RegisterStartupScript メソッドですが、C# での使い方は下記の通り。
1 2 3 4 5 6 7 8 9 10 11 | [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 クラスを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 | [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 // 登録する起動スクリプトリテラル ) |