Support us .Net Basics C# SQL ASP.NET ADO.NET MVC Slides C# Programs Subscribe Buy DVD

Part 62 - Implementing search functionality in asp.net mvc

Suggested Videos 
Part 59 - Layout view in mvc
Part 60 - ViewStart in asp.net mvc
Part 61 - Named sections in layout files in mvc



In this video, we will discuss, implementing search page in an asp.net mvc application. We should be able to search by Employee Name and Gender. The search page should be as shown below.
Search page in mvc application



We will be using table tblEmployee for this demo. Use the script below to create and populate the table with sample data.
Create table tblEmployee
(
ID int identity primary key,
Name nvarchar(50),
Gender nvarchar(10),
Email nvarchar(50)
)

Insert into tblEmployee values('Sara Nani', 'Female', 'Sara.Nani@test.com')
Insert into tblEmployee values('James Histo', 'Male', 'James.Histo@test.com')
Insert into tblEmployee values('Mary Jane', 'Female', 'Mary.Jane@test.com')
Insert into tblEmployee values('Paul Sensit', 'Male', 'Paul.Sensit@test.com')

Step 1: Create an empty asp.net mvc 4 application.

Step 2: Generate ADO.NET entity data model from database using table tblEmployee. Change the entity name from tblEmployee to Employee. Save changes and build the application.

Step 3: Add HomeController with the following settings.
a) Controller name = HomeController
b) Template = MVC controller with read/write actions and views, using Entity Framework
c) Model class = Employee
d) Data context class = SampleDBContext
e) Views = Razor

Step 4: Modify the Index() action method in HomeController as shown below.
public ActionResult Index(string searchBy, string search)
{
    if (searchBy == "Gender")
    {
        return View(db.Employees.Where(x => x.Gender == search || search == null).ToList());
    }
    else
    {
        return View(db.Employees.Where(x => x.Name.StartsWith(search) || search == null).ToList());
    }
}

Step 5: Copy and paste the following code in Index.cshtml view.
@model IEnumerable<MVCDemo.Models.Employee>

@{
    ViewBag.Title = "Index";
}
<div style="font-family:Arial">
<h2>Employee List</h2>
<p>
    @using (@Html.BeginForm("Index", "Home", FormMethod.Get))
    {
        <b>Search By:</b>
        @Html.RadioButton("searchBy", "Name", true) <text>Name</text>
        @Html.RadioButton("searchBy", "Gender"<text>Gender</text><br />
        @Html.TextBox("search") <input type="submit" value="search" />
    }
</p>
<table border="1">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Gender)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th>Action</th>
    </tr>
@if (Model.Count() == 0)
{
    <tr>
        <td colspan="4">
            No records match search criteria
        </td>
    </tr>
}
else
{
    foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Gender)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Email)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
                @Html.ActionLink("Details", "Details", new { id = item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.ID })
            </td>
        </tr>
    }
}
</table>
</div>

7 comments:

  1. Hello Venkat.
    Your videos are awesome.
    I have a question. In your above example you are searching with name or gender. Instead of that how can we search with all 3 parameters "Name", "Gender", "email". And if I know only 1 parameter out of three and how can we search by leaving other two parameters empty.

    Thank you in advance.

    Regards,
    MVS.

    ReplyDelete
    Replies
    1. I got the answer from your tutorial. Thank you.

      Delete
    2. how can we search with all 3 parameters "Name", "Gender", "email".

      Delete
  2. Sir i am Fresher Guy and currently i am working in MVC its only because of u sir......
    i have never seen such kind of MVC videos before sir...
    Thank u very much...gr8 work sir keep it up..

    ReplyDelete
  3. Actually what i am doing here is,

    I want search functionality in MVC4 with database

    Tagno-----int

    StockNo----Varchar in my database

    I want to search data from database using Tagno or StokeNo
    CONTROLLER:
    public ActionResult Sss(string searchBy,int search)
    {
    if (searchBy == "Gender")
    return View(db.ProductsHondaofConyers.Where(x => x.TagNo == search || search == null).ToList());
    else
    return View(db.ProductsHondaofConyers.Where(x => x.StockNo.StartsWith(search) || search == null).ToList());
    }

    ReplyDelete
  4. How to Search Based On ID Sir
    Please Help me

    ReplyDelete
  5. Venkat Sir, I want to implement just like a Make My Trip Search function pls help me

    ReplyDelete

If you like this website, please share with your friends on facebook and Google+ and recommend us on google using the g+1 button on the top right hand corner.