Nếu các bạn muốn tạo chức năng tìm kiếm tương tự như google, nhập keyword đến đâu thì tự động search kết quả đến đó mà ko cần phải refresh lại trang thì có thể sử dụng jQuery.
Tôi sử dụng luôn database demo là cái MusicStore nổi tiếng trong các hướng dẫn về MVC. Tôi chỉ demo tìm kiếm album bằng title nên db của tôi cũng chỉ có 1 table Album là đủ.
Tạo 1 project MVC2.
Tạo folder Model, tạo 1 ADO.NET entity data model,đặt tên là MusicStore và kéo cái table trong db vào :

Trong homecontroller tôi tạo thêm 2 action :

Mã:
        MusicStoreEntities storeDB = new MusicStoreEntities();        public ActionResult Search()        {            return View();        }                public ActionResult SearchResult(string s)        {            var albums = storeDB.Albums.Where(a => a.Title.Contains(s));            return PartialView(albums);        }
Tạo các 2 view tương ứng với 2 Action trên là Search.aspx và SearchResult.ascx, lưu ý với view SearchResult.aspx thì nhớ chọn cả mục Create a partial view(.ascx).
Ở view Search thì chỉ có 1 html input và 1 button submit, kết quả nhận được sẽ display ở partialview SearchResult.
Source của Search.aspx như sau :
[CODE =HTML]
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Search
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
function onSuggestion() {
$('#keyword').keyup(function () {
$('#key').val($('#keyword').val());
$.get('/home/SearchResult',{s:$('#keyword').val()},
function (data) {
$('#result').html(data);
});
}
);
}
</script>


Search

<% using(Ajax.BeginForm("SearchResult","Home",new AjaxOptions
{
InsertionMode=InsertionMode.Replace,
HttpMethod="GET",
UpdateTargetId="result"
})){%>
<input type="text" name="s" id="keyword" onkeyup="onSuggestion();" />

<input type="text" id="key" />
<input type="submit" name="Search" />
<%}%>

<div id="result">
</div>
</asp:Content>

[/CODE]

Lưu ý ở hàm JS mà tôi sử dụng jQuery, Mỗi khi bắt sự kiện keyup của cái textbox thì tôi gửi 1 HTTP get request về server :

Mã:
<script type="text/javascript">    function onSuggestion() {        $('#keyword').keyup(function () {            $('#key').val($('#keyword').val());            $.get('/home/SearchResult',{s:$('#keyword').val()},                 function (data) {                $('#result').html(data);            });        }        );    }</script>
Cái SearchResult chỉ đơn giản là show ra kết quả, và đc render mỗi khi submit ở view Search :
[CODE =HTML]
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerab le<SearchingDemo.Models.Album>>" %>

<table>
<tr>
<th></th>
<th>
AlbumId
</th>
<th>
GenreId
</th>
<th>
ArtistId
</th>
<th>
Title
</th>
<th>
Price
</th>
<th>
AlbumArtUrl
</th>
</tr>

<% foreach (var item in Model) { %>

<tr>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.AlbumId }) %> |
<%: Html.ActionLink("Details", "Details", new { id=item.AlbumId })%> |
<%: Html.ActionLink("Delete", "Delete", new { id=item.AlbumId })%>
</td>
<td>
<%: item.AlbumId %>
</td>
<td>
<%: item.GenreId %>
</td>
<td>
<%: item.ArtistId %>
</td>
<td>
<%: item.Title %>
</td>
<td>
<%: String.Format("{0:F}", item.Price) %>
</td>
<td>
<%: item.AlbumArtUrl %>
</td>
</tr>

<% } %>

</table>

<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>

[/CODE]

Lưu ý là ở Site.Master các bạn phải báo mấy cái script cần thiết :

Mã:
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>    <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
kết quả các bạn sẽ đc như sau :


Cái này chỉ là demo nên rất nhiều khuyết điểm,nếu mà nhiều bản ghi thì phải tạo rất nhiều request mỗi khi keyup, các bạn có thể nghiên cứu thêm để đưa ra các hướng giải quyết,mục đích của tôi chỉ là demo cho việc sử dụng jQuery, AJAX trong việc tạo 1 chức năng tìm kiếm đơn giản. DB và code demo đính kèm ở cuối bài