クライアントサイドスクリプトで履歴ポイントを操作する
履歴ポイントはサーバーサイドでの実装だけでなく、クライアントサイドでも実装可能です。原理的には何ら変わらず、部分更新などの動作が行われている時に履歴ポイントを作成し、キーと値を格納して、Navigateイベント内で、値を取り出して該当のコントロールに値を設定するという流れになっています。それでは早速サンプルを見てみたいと思います。
<script type="text/javascript">
// ページ呼び出し時のイベント登録
function pageLoad() {
// 戻る/進むボタンを押したときのイベント登録
Sys.Application.add_navigate(CallHistoryPoint);
// ボタンクリック時のイベント登録
var btn = $get('button');
$addHandler(btn, "click", btnClick);
}
// 戻る/進むボタンを押したときの挙動
function CallHistoryPoint(sender, e) {
var text = e.get_state().key
$get("label").innerHTML = text;
}
// 履歴ポイントの作成
function btnClick(e) {
var text = $get("text").value;
Sys.Application.addHistoryPoint({ key: text }, "Hello," + text);
$get("label").innerHTML = text;
}
</script>
<中略>
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableHistory="true" />
</div>
<label id="label"></label>
<input id="text" type="text" />
<input id="button" type="button" value="登録" />
上記サンプルでは、ページロードイベント時にadd_navigateメソッドを使って戻る/進むボタンを押した時のイベント登録を行っています。また、ボタンクリック時のイベントを$addHandlerメソッドを使ってbtnClick関数と関連付けしています。履歴ポイントの作成は、addHistoryPointメソッドを使い、第一パラメータにキーと値を格納します。第二パラメータはブラウザのタイトルです。特に必要ない場合、第二パラメータは省略できます。戻る/進むボタンをクリックした時の挙動として、get_state()メソッド+.「キー」の値を設定して格納した値を取り出しています。
サーバーサイド、クライアントサイドどちらでも選択できるのでアプリケーションにあった方を採用できるのも非常に魅力的です。CompositeScript同様にこちらも積極的に活用していきましょう。
ASP.NET Controls for Silverlightの概要と利用
ASP.NET Controls for Silverlightの概要は非常にシンプルです。ASP.NETアプリケーション上で簡単にSilverlightをホストできる2種類のコントロールです。機能で言うと、MediaをホストするMediaPlayerコントロールと、それ以外のSilverlightをホストするSiverlightコントロールです。どちらも利用の際にScriptManagerコントロールの配置が必要になります。
Silverlightについては既にさまざまな情報が出てきていますが、CodeZineのSilverlight連載記事は入門から丁寧に記述されているので、詳しく学習したい方はそちらを参考にしてください。本稿ではホストするコントロールの特徴について解説します。
