ASP.Net MVC with Entity Framework Cognizant Handson Programs
In this article, we are going to cover all ASP.Net MVC with Entity Framework Cognizant Handson Programs.
Ex 1.1 – Controllers and Actions
Ex1Controller.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers { public class Ex1Controller : Controller { List<String> breakingNews = new List<String>() { "PM visit brings business", "10% slash in GST", "Top Player announced retirement", "India wins series" }; public ActionResult NewsByChoice(int id) => base.Content(breakingNews[id - 1]); public ActionResult AllNews() => base.Content(string.Join("\n", breakingNews)); } }
Ex 1.2 Controllers and Actions
Ex2Controller.cs
using System.Reflection.Emit; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace ASP_App1.Controllers { enum CourseType { JavaCourse = 1, DotNetCourse } public class Ex2Controller : Controller { public ActionResult Course(int id) => base.RedirectToAction(((CourseType)id).ToString()); public ActionResult JavaCourse() => base.View(); public ActionResult DotNetCourse() => base.View(); } }
Also Read : CourseRepository Entity Framework Cognizant Handson Solution
DotNetCourse.cshtml
<h1>DotNetCourse</h1>
JavaCourse.cshtml
<h1>DotNetCourse</h1>
Ex 2.1 – Working With View Bag
HomeController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers { public class HomeController : Controller { string business = "Flipkart"; string type = "E-commerce"; int founded = 2007; string website = "www.flipkart.com"; [Route("flipkart/info")] public ActionResult About() { ViewBag.Business = business; ViewBag.Type = type; ViewBag.Founded = founded; ViewBag.Website = website; return View(); } // Implement 'About' action with Route 'flipkart/info' } }
About.cshtml
<h1>@ViewBag.Business</h1> <h3>@ViewBag.Type</h3> <h4>@ViewBag.Founded</h4> <h4>@ViewBag.Website</h4>
Ex 3.1 Working With Model Binding
Ex3Controller.cs
using ASP_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.ComponentModel.DataAnnotations; namespace ASP_App1.Controllers { public class Ex3Controller : Controller { private Course CreateJavaCourse() => new Course { CourseId = "C101", CourseName = "Java", Duration = 40, Level = "Beginner" }; private Department CreateFakeDept() => new Department() { CourseList = new List<string>() { "Java", "DotNet", "Python", "Ruby" } }; public ActionResult Index() { return base.RedirectToAction(nameof(CourseDescription), this.CreateJavaCourse()); } public ActionResult IndexChoice(int id) { if (id == 1) { return base.RedirectToAction(nameof(CourseDescription), this.CreateJavaCourse()); } else if (id == 2) { return base.RedirectToAction(nameof(CourseList), this.CreateFakeDept()); } return null; } public ActionResult CourseDescription(Course course) { return View(course); } public ActionResult CourseList(Department department) { return View(department); } } }
Course.cs
// THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_App1.Models { public class Course { public String CourseName { get; set; } public String CourseId { get; set; } public int Duration { get; set; } public string Level { get; set; } } public class Department { public List<String> CourseList { get; set; } } }
CourseDescription.cshtml
@model ASP_App1.Models.Course <h2>Course Details</h2> <table> <tr> <th>Course ID:</th> <th><input type="text" id="CourseId" name="CourseId" readonly="readonly" value="@Model.CourseId" /></th> </tr> <tr> <th>Course Name:</th> <th><input type="text" id="CourseName" name="CourseName" readonly="readonly" value="@Model.CourseName" /></th> </tr> <tr> <th>Course Duration:</th> <th><input type="text" id="Duration" name="Duration" readonly="readonly" value="@Model.Duration" /></th> </tr> <tr> <th>Course Level:</th> <th><input type="text" id="Level" name="Level" readonly="readonly" value="@Model.Level" /></th> </tr> </table>
CouseList.cshtml
@model ASP_App1.Models.Department <h2>Available Courses</h2> @foreach (var coursename in @Model.CourseList) { @coursename <br /> }
Ex 3.2 Working With Model Binding
Ex3Controller.cs
using ASP_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers { public class Ex3Controller : Controller { List<ShoppingCart> carts = new List<ShoppingCart>() { new ShoppingCart("CA1","Shoe", 3000,"Sport"), new ShoppingCart("CA2", "Shirt", 1500, "Men's Wear"), new ShoppingCart("CA3","Watch", 4000,"Accessories"), new ShoppingCart("CA4","Samsung",15000,"Mobiles") }; public ActionResult Cart(int id) => View(nameof(Cart), carts[id - 1]); [HttpPost] public ActionResult Cart([Bind] ShoppingCart cart) => View(nameof(Cart), cart); } }
ShoppingCart.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_App1.Models { public class ShoppingCart { public String CartId { get; set; } public String ItemName { get; set; } public int Price { get; set; } public string ItemType { get; set; } public ShoppingCart(String cartId, String itemName, int price, String itemType) { this.ItemName = itemName; this.CartId = cartId; this.Price = price; this.ItemType = itemType; } } }
Cart.cshtml
@model ASP_App1.Models.ShoppingCart <h1>Shopping Cart Details</h1> <p>@Model.CartId</p> <p>@Model.ItemName</p> <p>@Model.ItemType</p> <p>@Model.Price</p>
Ex 5-1 Partial View
ChTrust.cshtml
@using (Html.BeginForm()) { <table> <tr> <th>@Html.Partial("_HeaderNavBar")</th> </tr> <tr> <th> <section style="margin:50px;"> <table> <tr> <td>@Html.Label("Name")</td> <td>@Html.TextBox("txName")</td> </tr> <tr> <td>@Html.Label("Phone Number")</td> <td>@Html.TextBox("txPhoneNumber")</td> </tr> <tr> <td>@Html.Label("Donation For")</td> <td>@Html.DropDownList("ddlDonation", new List<SelectListItem>() { new SelectListItem() {Text="Education",Value="Education" }, new SelectListItem() {Text="Hospital",Value="Hospital" }, new SelectListItem() {Text="Old People Caring Home",Value="Old People Caring Home" } })</td> </tr> <tr> <td>@Html.Label("Amount")</td> <td>@Html.TextBox("txAmount")</td> </tr> <tr> <td>@Html.Label("Donation Type")</td> <td> @Html.RadioButton("rbDonationType", "One Time Donation", isChecked: true)One Time Donation @Html.RadioButton("rbDonationType", "Recurring Donation")@Html.Label("Recurring Donation") </td> </tr> <tr> <td></td> <td><button type="submit" id="submit">PROCEED</button></td> </tr> </table> </section> </th> </tr> <tr> <th>@Html.Partial("_FooterNavBar")</th> </tr> </table> }
ChTrustController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers { public class ChTrustController : Controller { public ActionResult ChTrust() => View(); public PartialViewResult _HeaderNavBar() => PartialView(nameof(_HeaderNavBar)); public PartialViewResult _FooterNavBar() => PartialView(nameof(_FooterNavBar)); } }
_HeaderNavBar.cshtml
<header>Help Our Charity</header>
_FooterNavBar.cshtml
<Footer>Thank you For Your Support</Footer>
Ex 4-1 Working With HTTP POST
Course.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_App1.Models { public class Course { public String CourseName { get; set; } public String CourseId { get; set; } public int Duration { get; set; } public string Level { get; set; } } }
Course.cshtml
@model ASP_App1.Models.Course <h1>Enter New Course Details</h1> <form action="post"> <label>Course Name</label> <input type="text" asp-for=@Model.CourseName> <br> <label>Course Id</label> <input type="text" asp-for=@Model.CourseId> <br> <label>Duration</label> <input type="number" asp-for=@Model.Duration> <br> <label>Duration</label> <input type="text" asp-for=@Model.Level> <br> <button type="submit">Submit</button> </form>
CourseController.cs
using ASP_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers { public class CourseController : Controller { public ActionResult Course() => View(new Course()); [HttpPost] public ActionResult Course(Course course) => View(course); } }
Ex 4-2 Working With HTTP POST
VehicleController.cs
using ASP_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_App1.Controllers //DO NOT change the namespace name { public class VehicleController : Controller { public ActionResult Registration() => View(new Registration()); [HttpPost] public ActionResult Registration(Registration r) { ViewBag.CustomerName = r.CustomerName; ViewBag.VehicleNo = r.VehicleNo; ViewBag.PhoneNumber = r.PhoneNumber; ViewBag.City = r.City; return View("./Confirm"); } } }
Registration.cshtml
@model ASP_App1.Models.Registration <h1><u>One Stop Service</u></h1> <form action="POST"> <label for="CName">Customer Name</label> <input type="text" id="CName" asp-for=@Model.CustomerName> <br> <label for="Pno">Phone Number</label> <input type="number" id="Pno" asp-for=@Model.PhoneNumber> <br> <label for="Vno">Vehical Number</label> <input type="text" id="Vno" asp-for=@Model.VehicleNo> <br> <label for="city">City</label> <input type="text" id="city" asp-for=@Model.City> <br> <label for="VModel">Vehical Model</label> <input type="text" id="VModel" asp-for=@Model.VehicleModel> <br> <label for="SType">Service Type</label> <input type="radio" name="Stype" id="Stype" value="Regular"> Regular <input type="radio" name="Stype" id="Stype" value="Other"> Others <br> <button type="submit">Submit</button> <button type="reset">Reset</button> </form>
Confirm.cshtml
<section> <h2>Welcome</h2> <br> <br> <p> <strong>Your booking for vehical Number, @ViewBag.VehicleNo was confirmed.</strong> </p> <p> <strong>Our service adviser (@ViewBag.City) will call you in Phone Number: @ViewBag.PhoneNumber</strong> </p> </section>
Registration.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_App1.Models { public class Registration { public String CustomerName { get; set; } public long PhoneNumber { get; set; } public string VehicleNo { get; set; } public string City { get; set; } public string VehicleModel { get; set; } public string ServiceType { get; set; } } }
Ex 6-2 Entity Framework Integration With ASP MVC
StudentController.cs
using ASP_EF_App1.DAL; using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_EF_App1.Controllers { public class StudentController : Controller { public ActionResult Placement() { /** DO NOT REMOVE THE BELOW 2 LINES **/ StudentDAO sd = new StudentDAO(); sd.AddPlacements(); /** END OF 2 LINES **/ using (var context = new CollegeContext()) { var placements = context.Placements.OrderBy(p => p.PlacementId).ToList(); return View(placements); } } } }
CollegeContext.cs
using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace ASP_EF_App1.DAL { public class CollegeContext : DbContext { public DbSet<Placement> Placements { get; set; } public CollegeContext() : base("CollegeContext") { } } }
Placement.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_EF_App1.Models { public class Placement { public int PlacementId { get; set; } public int StudentId { get; set; } public String StudentName { get; set; } public String Company { get; set; } public String PlacementYear { get; set; } } }
Placement.cshtml
@model IEnumerable<ASP_EF_App1.Models.Placement> <h1>Student Placement Details</h1> <table> <thead> <tr> <th>Placement Id</th> <th>Student Id</th> <th>Student Name</th> <th>Company</th> <th>Placement Year</th> </tr> </thead> <tbody> @foreach (var p in Model) { <tr> <td>@p.PlacementId</td> <td>@p.StudentId</td> <td>@p.StudentName</td> <td>@p.Company</td> <td>@p.PlacementYear</td> </tr> } </tbody> </table>
Ex 6-3 Entity Framework Integration With ASP MVC – POST
StudentController.cs
using ASP_EF_App1.DAL; using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_EF_App1.Controllers //DO NOT change the namespace name { public class StudentController : Controller //DO NOT change the class name { public ActionResult Index() { var student = new Student { StudentName = "Johana", Department = "Art", PhoneNumber = 9876565434, EnrolledDate = Convert.ToDateTime("06/25/2018") }; return RedirectToAction(nameof(AddDetail), student); } public ActionResult AddDetail(Student student) { using (var context = new CollegeContext()) { context.Students.Add(student); context.SaveChanges(); } return View("ViewDetails", student); } } }
CollegeContext.cs
using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace ASP_EF_App1.DAL { public class CollegeContext : DbContext { public DbSet<Student> Students { get; set; } public CollegeContext() : base("CollegeContext") { } } }
Student.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_EF_App1.Models { public class Student { public int StudentId { get; set; } public String StudentName { get; set; } public DateTime EnrolledDate { get; set; } public String Department { get; set; } public long PhoneNumber { get; set; } } }
ViewDetails.cshtml
@model ASP_EF_App1.Models.Student <table> <tr> <td>StudentName</td> <td> <b>@Model.StudentName</b> </td> </tr> <tr> <td>Department</td> <td> <b>@Model.Department</b> </td> </tr> <tr> <td>PhoneNumber</td> <td> <b>@Model.PhoneNumber</b> </td> </tr> <tr> <td>EnrolledDate</td> <td> <b>@Model.EnrolledDate</b> </td> </tr> </table>
Ex 6-4 Entity Framework Integration With ASP – POST
Project.cs
//THIS IS FOR REFERENCE ONLY. YOU ARE NOT REQUIRED TO MAKE ANY CHANGES HERE using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ASP_EF_App1.Models { public class Project { public int ProjectId { get; set; } public String ProjectName { get; set; } public String Platform { get; set; } public String Client { get; set; } public int Duration { get; set; } } }
ProjectController.cs
using ASP_EF_App1.DAL; using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ASP_EF_App1.Controllers { public class ProjectController : Controller { public ActionResult ProjectDetail() => View("AddProjectDetails"); [HttpPost] public ActionResult ProjectDetail(Project project) { project.ProjectId = 1; using (var context = new ProjectContext()) { context.Projects.Add(project); context.SaveChanges(); } return View("ViewProjectDetails", project); } } }
ProjectContext.cs
using ASP_EF_App1.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace ASP_EF_App1.DAL //DO NOT change the namespace name { public class ProjectContext : DbContext //DO NOT change the class name { public DbSet<Project> Projects { get; set; } public ProjectContext() : base("ProjectDB") { } } }
AddProjectDetails.cshtml
@model ASP_EF_App1.Models.Project @using (Html.BeginForm("ProjectDetail", "Project", FormMethod.Post)) { @Html.LabelFor(m=>m.ProjectName) @Html.TextBoxFor(m=>m.ProjectName) @Html.LabelFor(m=>m.Platform) @Html.TextBoxFor(m=>m.Platform) @Html.LabelFor(m=>m.Client) @Html.TextBoxFor(m=>m.Client) @Html.LabelFor(m=>m.Duration) @Html.TextBoxFor(m=>m.Duration) <button id="submit" type="submit">Submit</button> }
ViewProjectDetails.cshtml
@model ASP_EF_App1.Models.Project <table> <tr> <td>ProjectId</td> <td><b>@Model.ProjectId</b></td> </tr> <tr> <td>ProjectName</td> <td><b>@Model.ProjectName</b></td> </tr> <tr> <td>Platform</td> <td><b>@Model.Platform</b></td> </tr> <tr> <td>Client</td> <td><b>@Model.Client</b></td> </tr> <tr> <td>Duration</td> <td><b>@Model.Duration</b></td> </tr> </table>