jQueryをASP.NETでラップする
世の中にはJavaScriptで開発されたAjaxライブラリ(prototype.js、Dojoなど)が星の数ほどあるが、Webアプリの開発には、基本的にASP.NETを使うということもあり、ASP.NET自体、生のJavaScriptとの親和性があまり高くないので出番が少ないため、あまり興味がなかった。
しかも今ならASP.NET Ajax Extensionsがあるので、そういう事は全てそっちに任せる事ができるのでなおさら。
しかし、マイコミジャーナルの以下の記事を読んで「jQuery」なるAjaxライブラリに興味を持った。
jQuery 1.2登場!! - 16日には新UIを公開予定
jQueryはJavaScriptで開発された軽量なAjaxフレームワーク。
動作が高速でサイズも小さいという特徴がある。XPathを指定して動作する仕組みを採用している点も特徴的
これを使うとリッチなUIを簡単に作成する事ができる。実際に使ってみたが、本当に簡単だった。
で、なんか気に入ったので(特に名前)これをASP.NETのサーバーコントロールでラップして、VisualStudioでポトペタ(RAD)開発できるようにしようと思い立った。
ということで今回からjQueryをラップしたサーバーコントロールをいくつか開発していく。
まずは簡単なところから、内部のコンテンツを伸縮可能なパネルコントロール「CollapsablePanel」を開発する。
プロジェクトの準備
以下からjQueryの最新版をダウンロードする。
jQuery 1.2.1
開発にはVisualStudio2005 + SP1.0(やったかな?)を使用する。言語はもちろんC#。
1.「jQueryWebControls」という名前で「Web コントロールライブラリ」プロジェクトを作成する。
プロジェクト構成
2.「規定の名前空間」を「JQuery」に設定する。
3.「script」フォルダにjQueryのモジュールを配置し、「ビルドアクション」を「埋め込まれたリソース」に変更する。
4.「AssemblyInfo.cs」に以下の属性を宣言する。
[assembly: TagPrefix("JQuery.Web.UI", "jQuery")] [assembly: WebResource("JQuery.script.jquery-1.2.1.js", "text/javascript")]
「TagPrefix」属性は独自のサーバーコントロールをaspxファイルで利用する場合に使用される
タグプリフィックスを定義するもの。
↓こういうこと
<jQuery:CollapsablePanel runat="server"></jQuery:CollapsablePanel>
「WebResource」属性はアセンブリに埋め込んだリソース(ここではJavaScript)をWebページからリンクできる
ように、自動的にリソースにWebアドレスを割り当てるためのもの。
5.次はこのライブラリをテストするためのWebサイト「jQuerySite」を「ASP.NET Web アプリケーション」プロジェクトで作成する。
プロジェクト構成
6.「参照設定」で「jQueryWebControls」プロジェクトを参照する。
7.「Web.config」に以下の設定を追加する。
<configuration> <system.web> <pages> <controls> <add tagPrefix="jQuery" namespace="JQuery.Web.UI" assembly="jQueryWebControls"/> </controls> </pages> </system.web> </configuration>
この設定を追加する事で、jQueryWebControlsのサーバーコントロールには自動的に「jQuery」というタグプリフィックスが使用されるようになる。
これで準備完了。