Saturday, 23 May 2015

Use Business Library as Modal in Asp.Net MVC

Here we will understand Modal with a Different library, means In MVC When we run a application then we need to specify correct controller name with Action method ,If we pass wrong name then it gives error.
But with modal this is different, means modal is optional and we can put it anywhere as library also.
Step (1):- Create a database table, So for that execute the below code
Create Table StudentInfo
(
     StudentID int identity primary key,
     StudentName nvarchar(50),
     Gender nvarchar(50),
     SchoolName nvarchar(50)
)
GO



Insert into StudentInfo values ('Munesh','Male','VIT')
Insert into StudentInfo values ('Rahul','Male','ABC')
Insert into StudentInfo values ('Reet','Female','XYZ')
Insert into StudentInfo values ('Anshuman','Male','PQR')


Also Create  a stored procedure for Retriving data from database
Create procedure GetAllStudents
as
Begin
 Select StudentID, StudentName, Gender, SchoolName 
 from StudentInfo
End

Step(2):-  Now Add  a new  library to the  solution .So for adding a Library to solution , Right click on Solution explorer  ->  Add ->New Project
Here New Project Screen will come ,from this screen we will select “Windows - >  “Class Library “ And give this library a meaningful name “BusinessLayer”.
This automatically generate a class as “Class1.cs” , So change the class name as “Student.cs” and Define the database property as we define in Modal Classes


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BusinessLayer
{
    public class Student
    {
        public int StudentID { get; set; }
        public string StudentName { get; set; }
        public string Gender { get; set; }
        public string StudentClass { get; set; }
    }
}



Step(3): -  Add a another class to this library for writing business logic code through that we will retrieve  the  data from database, Give this class name as “BusinessLogic.cs”.
Before writing code for retrieving the data from database first add some reference for Ado.Net code to this library
Go to reference folder of this library project - >Right click on Reference folder- >  .Net -> then select "System.Configuration" assembly. After that write following code to this class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace BusinessLayer
{
    public class BusinessLogic
    {
        public IEnumerable<Student> student
        {
            get
            {
                string connectionString =                    ConfigurationManager.ConnectionStrings["Conncet"].ConnectionString;

                List<Student> employees = new List<Student>();

                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    SqlCommand cmd = new SqlCommand("GetAllStudents", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    con.Open();
                    SqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        Student student = new Student();
                        student.StudentID = Convert.ToInt32(rdr["StudentID"]);
                        student.StudentName = rdr["StudentName"].ToString();
                        student.Gender = rdr["Gender"].ToString();
                        student.StudentClass = rdr["SchoolName"].ToString();
                     

                        employees.Add(student);
                    }
                }

                return employees;
            }
        }
    }
}

After everything done build this Library project.
Connection string in Web config will be
<connectionStrings>
    <add name="Connect"
        connectionString="server=.; database=MVCApplication; integrated security=SSPI"
        providerName="System.Data.SqlClient"/>
  </connectionStrings>


Step(4): -  Now Go to your MVC Project add the reference of this library project, using right click on Reference folder.


Step(5): -  Now go to controller folder and add a controller to this project ,give the name for this controller as “Student”. In this controller add the name space for BusinessLogic project.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BusinessLayer;

namespace MvcApplication2.Controllers
{
    public class StudentController : Controller
    {
        public ActionResult Index()
        {
            BusinessLogic BL = new BusinessLogic();

            List<Student> student = BL.student.ToList();
            return View(student);
        }

    }
}



Step(6):- Now Right click on this Controller method and add a view , While creating view select Modal class as “Student” and Give Scaffold template as “List”, So it will create a list for us.


@model IEnumerable<BusinessLayer.Student>

@{
    ViewBag.Title = "Index";
}

<div>
<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table border = "1">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.StudentName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Gender)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.StudentClass)
        </th>
        <th>
        Action To be Taken
        </th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.StudentName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Gender)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StudentClass)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.StudentID }) |
            @Html.ActionLink("Details", "Details", new { id=item.StudentID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.StudentID })
        </td>
    </tr>
}

</table>
</div>


Before running this application changes the controller name in Route.config file.
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Student", action = "Index", id = UrlParameter.Optional }
            );
        }


Now Run This Application you will get o/p like this




Here if you will click on any link it will give exception because we didn’t work on these links.

No comments:

Post a Comment

Paging in html table using javascript

I demonstrated how to use HTML tables on the client for a very simple client-side paging solution. I have heard from several people who p...