SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

prototype.jsを利用したドラッグできるWebカスタムコントロール

フリーのJavaScriptライブラリによる動的なASP.NETページの作成支援

ダウンロード MovableFolder.zip (87.9 KB)

外部JavaScriptファイルへのリンクの方法

 ASP.NET 2.0には、埋め込みリソースへ外部からアクセスするための仕組みが用意されています。

 この記事はASP.NET 1.1の頃に書かれたもので、実際のASP.NET 2.0では動作が異なる部分がありますが、この記事を参考にして説明していきます。

背景

 従来のASP.NET 1.1では、外部ファイルや画像を利用するカスタムコントロールを配布する場合、指定したフォルダに画像を配置したり、設定ファイルを書き換えたりする必要がありました。これは、アプリケーション配布のコストを増大させ、スマートな方法とは言えないものでした。カスタムコントロールを利用する側としてはDLLの参照設定のみで、コントロールを利用できるようになるのが一つの理想の形といえます。

 ASP.NET 2.0では、アセンプリへリソースファイルを埋め込み、それを自動で呼び出すための仕組みが実装されています。この仕組みを利用すれば、DLLの参照設定のみで配布可能なカスタムコントロールを作成できます。

アセンブリへのリソースファイルの埋め込み

 アセンブリへのリソースファイルの埋め込みは簡単です。Visual Studio 2005では、以下の手順で行います。

  1. 埋め込みたい画像・ファイルなどをプロジェクトに追加
  2. 追加した画像・ファイルを選択しプロパティウィンドウを表示
  3. ビルドアクションを埋め込まれたリソースに設定

 これにより、配布されるDLLに画像やスクリプトファイルなどを埋め込むことができます。

埋め込んだ画像ファイルの設定
埋め込んだ画像ファイルの設定

埋め込んだ画像ファイルの表示

 さて次は、埋め込んだ画像ファイルを表示するサンプルアプリケーションを作成してみましょう。先ほどの画像の「Image/TreeViewExplorer/Folder.gif」を使用します。

 まずは画像ファイルを埋め込みリソースとして使用するための属性をアセンブリに対して定義します。

画像ファイルの属性の設定
画像ファイルの属性の設定

 属性の定義は名前空間の上の部分にコーディングします。同じプロジェクト内であれば、どのファイルで行っても構いません。属性の第1引数には[プロジェクトの既定の名前空間].[フォルダ].[ファイル名]の順でパスを設定します。第2引数にはファイルの種類を示す値を設定します。

 この埋め込んだ画像ファイルのURLを取得するためにはPageクラスのClientScriptプロパティのGetWebResourceUrlという名前のメソッドを利用します。

String img = Page.ClientScript.GetWebResourceUrl(
    typeof(MovableFolder)
    , "Obic.Higuchi.UI.WebForm.Image.TreeViewExplorer.Folder.gif");

 これで埋め込んだ画像ファイルへのURLを取得できます。HTMLで書き出すと、

src="WebResource.axd?a=fSystem.Web, Version=1.2.3400.0,
 Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&
 r=WebUIValidation.js&t=631944362841472848"

 というようなURLがセットされているはずだとMSDNにはかかれています。しかし、どうやらこれは古い仕様で製品版では若干文字列の書式が異なります。

 いずれにせよこの意味不明な文字列が埋め込んだ画像ファイルへのURLを表すことには変わりがありません。詳細は隠蔽したまま話を先へ進めていきましょう。

埋め込んだJavaScriptファイルへのリンク

 HTMLファイルでは、JavaScriptファイルへのリンクは以下のように記述されます。

<script language="javascript" src="MyScriptFile.js"
        type="text/javascript">

 先ほどの埋め込んだ画像ファイルのURLを取得するのと同じ要領でJavaScriptファイルへのリンクURLを取得し、このような書式のHTMLを書き出すようにすれば、埋め込んだJavaScriptファイルが利用できるようになります。

 しかし、このような処理は定型的な処理で何度も書くのは煩雑です。そこでASP.NET 2.0ではこの記述を容易にできるようにClientScriptManagerクラスにRegisterClientScriptResourceというメソッドが用意されています。

this.Page.ClientScript.RegisterClientScriptResource(
    typeof(MovableFolder)
    , "Obic.Higuchi.UI.WebForm.JavaScript.Prototype.js");

 このメソッドを呼び出すと出力されるHTMLファイルには、上記のスクリプトへのリンク用のHTMLが含まれることになります。

次のページ
prototype.jsの拡張

修正履歴

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

Higty(Higty)

C#マスターになるべく勉強中の身分です。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/321 2006/03/16 09:56

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー