In this article I am going to show how we can render a partial view in a modal popup with AJAX call. Here in Partial View I will show the record from my database table using web grid.
Open Visual Studio, New, then click Project,
![new]()
![project]()
Below is my Data Table.
![table]()
Data in my Data Table.
![data]()
Now right click on Project Solution Explorer, Add, then click ADO.NET Entity Data Model.
![add]()
![add]()
![add]()
![add]()
![add]()
![add]()
![add]()
Now time to add a new controller.
![controller]()
![controller]()
![controller]()
Add a View here.
![view]()
![view]()
Add the following code to your Index.cshtml,
- @ {
- ViewBag.Title = "Render Partial View As Modal Popup Using AJAX call with JSON";
- Layout = "~/Views/Shared/_Layout.cshtml";
- }
- @section scripts { < script > var ajaxCallURL = '/Employee/EmployeePartial';
- $(function()
- {
- $(".getAllEMP").click(function()
- {
- var $buttonClicked = $(this);
- var options = {
- "backdrop": "static",
- keyboard: true
- };
- $.ajax({
- type: "GET",
- url: ajaxCallURL,
- contentType: "application/json; charset=utf-8",
- datatype: "json",
- success: function(data)
- {
- debugger;
- $('#myModalContent').html(data);
- $('#myModal').modal(options);
- $('#myModal').modal('show');
- },
- error: function() {
- alert("Content load failed.");
- }
- });
- });
- $("#closbtn").click(function()
- {
- debugger;
- $('#myModal').modal('hide');
- });
- }); < /script>
- } < table style = "background-color:orange; width:100%; border:solid5pxgreen; padding:20px;" > < tr > < td align = "center"
- style = "padding:20px;" > < ahref = "javascript:void(0);"
- class = "getAllEMP"
- style = "font-size:20pt;" > Get All Employee Information < /a> < /td> < /tr> < /table> < divid = 'myModal'
- class = 'modal'
- style = "text-align:right; " > < divclass = "modal-dialog"
- style = "width:900px; height:400px; padding:10px;" > < divclass = "modal-content"
- style = "overflow: auto; padding:10px; background-color:#d2f5f4;" > < button type = "button"
- id = "closbtn" > x < /button> < divstyle = "height:10px;" > < /div> < div id = 'myModalContent'
- style = "width:850px; height:400px; padding:10px;" > < /div> < /div> < /div> < /div>
Now add the following code to your EmployeeController,
![EmployeeController]()
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace MVC_WebGrid_PartialView_ModalPopup.Controllers
- {
- public class EmployeeController: Controller
- {
- CompanyDBEntities db = new CompanyDBEntities();
-
- public ActionResult Index()
- {
- return View();
- }
- public ActionResultEmployeePartial()
- {
- List < Emp_Information > model = db.Emp_Information.ToList();
- return PartialView("_EmpPartial", model);
- }
- }
- }
Now Add a partial view inside Views, then Employee Folder,
In _EmpPartial.cshtml write the following code: - @model List < MVC_WebGrid_PartialView_ModalPopup.Emp_Information > @
- {
-
- var grid = newWebGrid(source: Model, canPage: true, rowsPerPage: 10, ajaxUpdateContainerId: "gridContent");
- grid.Pager(WebGridPagerModes.All);
- } < styletype = "text/css" > .webgrid - table
- {
- font - family: "Trebuchet MS", Arial, Helvetica, sans - serif;
- font - size: 1.2e m;
- width: 100 % ;
- display: table;
- border - collapse: separate;
- border: solid1px# ff6a00;
- background - color: white;
- }.webgrid - tabletd, th
- {
- border: 1 pxsolid# ff6a00;
- padding: 3 px7px2px;
- text - align: left;
- }.webgrid - header {
- background - color: #ff6a00;
- color: #ffffff;
- padding - bottom: 4 px;
- padding - top: 5 px;
- text - align: left;
- }.webgrid - footer {}.webgrid - row - style
- {
- padding: 3 px7px2px;
- }.webgrid - alternating - row {
- background - color: #00ffff;
- padding: 3px7px2px;
- }
- </style>
- <div id= "gridContent" >
- @grid.GetHtml
- (
- tableStyle: "webgrid-table",
- headerStyle: "webgrid-header",
- footerStyle: "webgrid-footer",
- alternatingRowStyle: "webgrid-alternating-row",
- rowStyle: "webgrid-row-style",
- columns: grid.Columns
- (
- grid.Column
- (
- header: "No.",
- format: @
- < text >
- < div >
- @(item.WebGrid.Rows.IndexOf(item) + 1)
- < /div></text >
- ),
- grid.Column
- (
- columnName: "EMP_ID", header: "EMPLOYEE ID"
- ),
- grid.Column
- (header: "Name", format:
- @ < text > < a href = "#" > @item.Name < /a></text > ),
- grid.Column(columnName: "ManagerName", header: "ManagerName"),
- grid.Column(columnName: "ProjectName", header: "ProjectName"),
- grid.Column(columnName: "City", header: "City")))
- < /div>
In Route.config set startup controller and action method like below:
![config]()
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using System.Web.Routing;
- namespace MVC_WebGrid_PartialView_ModalPopup
- {
-
- public class RouteConfig
- {
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", defaults: new
- {
- controller = "Employee",
- action = "Index", id = UrlParameter.Optional
- });
- }
- }
- }
Now run your Application:
![app]()
![application]()
Read more articles on AJAX: