クライアントサイドスクリプトで履歴ポイントを操作する
履歴ポイントはサーバーサイドでの実装だけでなく、クライアントサイドでも実装可能です。原理的には何ら変わらず、部分更新などの動作が行われている時に履歴ポイントを作成し、キーと値を格納して、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連載記事は入門から丁寧に記述されているので、詳しく学習したい方はそちらを参考にしてください。本稿ではホストするコントロールの特徴について解説します。