サイト内検索: ナビゲーション リンクのスキップ

  昨日:17  本日:4  合計:79514


ASPボタンでgoogleサイト内検索

 今回は、googleの検索エンジンを利用したサイト内検索窓の設置です。
 HTMLページであれば、googleサイトのリンク、検索機能の追加 より、コーピー&ペーストして簡単に設置することができますが、ASP.NETでは、ポストバック(サーバーの処理結果を同じページに返す)が基本概念になっているので、少し注意が必要です。

 ASP.NETのページ(aspxの拡張子)でも簡単なページであれば、<form id="form1" runat="server">の前、もしくは、</form>の後に、HTMLソースをコーピー&ペーストしても良いのですが、マスターページ等の少し入り組んだ作りになると、ASPボタンで処理してしまったほうが、すっきりします。

 動作サンプル

※上段は参考までに通常のHTMLソースをコーピー&ペースト(ASP.NETはユニコード処理の為パラメータをutf-8に変更)、下段がASPボタン。

■ ボタンクリックイベントでResponse.Redirect

1.スタートメニューよりVWD2008を起動し、新しいWebサイトを作成します。(名前は何でも構いません。)

2.Default.aspxをデザインビューで開き、テキストボックス(ID:txtKeyword)とボタン(ID:btnSearch)を任意の場所に配置します。

3.Default.aspx.vbに下記のように記載します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Partial Class _Default
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'ページロード時、btnSearchボタンに別窓で開く属性を持たせる
    btnSearch.Attributes("OnClick") = "target='_blank';"
  End Sub

  Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
    'utf-8パラメータの替わりにHttpUtility.UrlEncodeを使用する
    Response.Redirect("http://www.google.co.jp/search?q=" & _
                      HttpUtility.UrlEncode(txtKeyword.Text) & _
                      
"&domains=www.xox.bz&sitesearch=www.xox.bz")
  End Sub
End Class

・Response.Redirect は、強制的にURLジャンプする命令です。
・URLジャンプ時に別窓で開かない場合は、Page_Loadイベントを記載する必要はありません。
・Response.Redirect(…www.xox.bz)2ヵ所を、サイト内検索したいURLに変更してください。

 サンプルファイルダウンロード

※念のためサンプルファイルも用意しておきました。

4.[Ctrl]+[F5]キーを押すか、上部メニューから[デバッグ]→[デバッグなしで開始]を選択して、実行します。


Copyright (C) 2009-2009 ケンゾー
初版:2009年4月17日、最終更新:2009年5月6日
http://www.xox.bz/