all things Sitecore related

Using Google Custom Search Engine (CSE) with Asp .Net

By on January 12, 2008 in ASP.Net, Google with 3 Comments

I’ve been using Google Custom Search Engine (CSE) for one of my projects (searchTravelBlog). When I was trying to implement CSE in NewGuid.NET I found some problems doing this.The big issue is that CSE depends on the html FORM element with submit event for posting all the variables from the hiddenfields. 

The CSE code from Google looks like this:   

[code:html]
<form action="http://" id="searchbox_004900934070880588383:m5qbf6oxe6k">
      <input type="hidden" name="cx" value="004900934070880588383:m5qbf6oxe6k" />
      <input type="hidden" name="cof" value="FORID:11" />
      <input type="text" name="q" size="25" />
      <input type="submit" name="sa" value="Search" />
</form>
[/code]

 

When you copy this code into a .Net page it will not work. This because of the default .Net server form tag.

If you want to use CSE within your .Net page don't use Google's code that generates the search form.  Create your own code, just add one Textbox and one Button control to your page.

[code:html]
<asp:TextBox ID="searchQuery" runat="server" size="30" />
<asp:Button runat="server" Text="Search .Net Info" ID="searchButton" OnClick="searchButton_Click" />
[/code]

 

In the code behind you add the following searchButton_Click event:

[code:c#]
protected void searchButton_Click(object sender, EventArgs e)
{
   StringBuilder redirectUrl = new StringBuilder();
   //The URL to your resultpage
   redirectUrl.Append("./search_netInfo.aspx");
   //Add your CSE unique identifier
   redirectUrl.Append("?cx=004900934070880588383%3Am5qbf6oxe6k");
   //Add your advertising location code
   redirectUrl.Append("&cof=FORID%3A11");
   //The search query
   redirectUrl.Append("&q=" + searchQuery.Text);
   //Redirect to the resultpage
   Response.Redirect(redirectUrl.ToString());
}
[/code]

 

You can find these values in the hidden values from the default code that Google creates for you.It is important that the values within the redirectUrl are html encoded.

Add the following code to your Page_PreRender so that the searchquery will appear in the textbox.

[code:c#]
protected void Page_PreRender(object sender, EventArgs e)
{
   searchQuery.Text = Request.QueryString["q"];
}
[/code]

 

Note: This example doesn't include the branding that Google requires. Please read the branding guidelines here!

About the Author

About the Author: Pieter is Technical Marketing Manager for Sitecore Netherlands and owner of Gaatverweg.nl. He has more than ten years experience with software developing in multiple programming languages and with different Content Management Systems. Before joining Sitecore Pieter was a lead developer for multiple Sitecore and .Net projects, he joined Sitecore in 2011 as an Solution Architect in The Netherlands, after two years as an Solution Architect he joined the Technical Marketing department. In the role as Techinical Marketing Manager he is responsible for the Global MVP program and the Sitecore technical branding strategy. You can follow Pieter on twitter: @pieterbrink123 or Google+ .

Subscribe

If you enjoyed this article, subscribe now to receive more just like it.

There Are 3 Brilliant Comments

Trackback URL | Comments RSS Feed

  1. dave says:

    cheers Pieter – helped alot…..

  2. SK says:

    What do I do with the Javascript tag it is as follows
    <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script&gt;

  3. Dave Reeder says:

    Very helpful thanks. You write things in a nice simple way so beginners to asp.net (like me) can understand!

Post a Comment

Your email address will not be published. Required fields are marked *

Top