Before reading this article please visit my previous article; the URL is:
http://www.c-sharpcorner.com/UploadFile/b19d5a/7464/
Now in the "HomeController" write the action method for Create. The code will be:
public ActionResult Create()
{
ViewBag.Message = "Welcome Blog Post Page";
var v = ViewData.Model = _db.Comments.ToList();
var Comments = new Comments();
return View(Comments);
}
//
// POST: /Home/Create
[HttpPost]
public ActionResult Create(Comments Comments)
{
try
{
// TODO: Add insert logic here
if (ModelState.IsValid)
{
_db.Comments.Add(Comments);
_db.SaveChanges();
return RedirectToAction("index", "Home");
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
Step 2:
Now right-click under the "Create" method and after that please check "Create Strongly-typed Views".
Choose Model Class "Comments" Under DropDown List.
Select "Create" under the "Scaffold Template" list. After that press the "Add" button. It will automatically create a view named "Create " under the "Home" folder.
The code will be generated automatically. Select all and Paste the following code under "create" view.
@model blogmvc3.Models.Comments
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Comments</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.BlogName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.BlogName)
@Html.ValidationMessageFor(model => model.Blog.BlogName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Description)
@Html.ValidationMessageFor(model => model.Blog.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Body)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Body)
@Html.ValidationMessageFor(model => model.Blog.Body)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Comment)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Comment)
@Html.ValidationMessageFor(model => model.Comment)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Step 3:
Now write the method named "Details" under "Homecontroller":
public ActionResult Details(int id)
{
Comments Comments = _db.Comments.Find(id);
if (Comments == null)
return RedirectToAction("Index");
return View("Details", Comments);
}
Now right-click under the "Details" method and after that please check "Create Strongly-typed Views".
Choose Model Class "Comments" Under Dropdown list.
Select "Details" under the "Scaffold Template" list. After that press the "Add" Button. It will automatically create a view named "Details" under the "Home" folder.
The code will be generated automatically. Select all and paste the following code under "Details" view.
@model blogmvc3.Models.Comments
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}
<h2>Details</h2>
<fieldset>
<legend>Comments</legend>
<div class="display-label">BlogName</div>
<div class="display-field">@Model.Blog.BlogName</div>
<p></p>
<div class="display-label">Blog Description</div>
<div class="display-field">@Model.Blog.Description</div>
<p></p>
<div class="display-label">Body</div>
<div class="display-field">@Model.Blog.Body</div>
<p></p>
<div class="display-label">Comment</div>
<div class="display-field">@Model.Comment</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.CommentId }) |
@Html.ActionLink("Back to List", "Index")
</p>
Step 4:
Now it's the time for the Edit action method in the home controller.
public ActionResult Edit(int id)
{
var Comments = _db.Comments.Single(a => a.CommentId == id);
return View(Comments);
}
//
// POST: /Home/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var Comments = _db.Comments.Find(id);
try
{
if (TryUpdateModel(Comments))
{
_db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(Comments);
}
}
catch
{
return View(Comments);
}
}
Now right-click under the "Edit" Action method and after that please check "Create Strongly-typed Views".
Choose Model Class "Comments" Under Dropdown List.
Select "Edit" under "Scaffold Template" List. After that press the "Add" Button. It will automatically create a view named "Edit" under the "Home" folder.
The code will be generated automatically. Select all and paste the following code under "Edit" view.
@model blogmvc3.Models.Comments
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Comments</legend>
@Html.HiddenFor(model => model.CommentId)
<div class="editor-label">
@Html.LabelFor(model => model.Blog.BlogName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.BlogName)
@Html.ValidationMessageFor(model => model.Blog.BlogName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Description)
@Html.ValidationMessageFor(model => model.Blog.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Body)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Body)
@Html.ValidationMessageFor(model => model.Blog.Body)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Comment)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Comment)
@Html.ValidationMessageFor(model => model.Comment)
</div>
@* <div class="editor-label">
@Html.LabelFor(model => model.BlogId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BlogId)
@Html.ValidationMessageFor(model => model.BlogId)
</div>*@
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Step 5:
Now for the delete action please write the following code under the "homeController".
public ActionResult Delete(int id)
{
return View(_db.Comments .Find (id));
}
//
// POST: /Home/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
// TODO: Add delete logic here
var comments = _db.Comments.Find(id);
_db.Comments.Remove(comments);
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
Now right-click under the "Delete" Action method and after that please check "Create Strongly-typed Views".
Choose Model Class "Comments" under the Dropdown list.
Select "Delete" under the "Scaffold Template" list. After that press the "Add" Button. It will automatically create a view named "Delete" under the "Home" folder.
The code will be generated automatically. Select all and paste the following code under the "Delete" view.
@model blogmvc3.Models.Comments
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}
<h2>Delete</h2>
<h3>Are you sure you want to delete this?</h3>
<fieldset>
<legend>Delete Action</legend>
<div class="display-label">BlogName</div>
<div class="display-field">@Model.Blog.BlogName</div>
<p></p>
<div class="display-label">Blog Description</div>
<div class="display-field">@Model.Blog.Description</div>
<p></p>
<div class="display-label">Body</div>
<div class="display-field">@Model.Blog.Body</div>
<p></p>
<div class="display-label">Comment</div>
<div class="display-field">@Model.Comment</div>
</fieldset>
@using (Html.BeginForm()) {
<p>
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
Now the overall code of the "HomeController" is given below:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using blogmvc3.Models;
using blogmvc3.DatabaseContext;
namespace blogmvc3.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
BlogDbContext _db = new BlogDbContext();
public ActionResult Index()
{
return View(_db.Comments .ToList ());
}
//
// GET: /Home/Details/5
public ActionResult Details(int id)
{
Comments Comments = _db.Comments.Find(id);
if (Comments == null)
return RedirectToAction("Index");
return View("Details", Comments);
}
//
// GET: /Home/Create
public ActionResult Create()
{
ViewBag.Message = "Welcome Blog Post Page";
var v = ViewData.Model = _db.Comments.ToList();
var Comments = new Comments();
return View(Comments);
}
//
// POST: /Home/Create
[HttpPost]
public ActionResult Create(Comments Comments)
{
try
{
// TODO: Add insert logic here
if (ModelState.IsValid)
{
_db.Comments.Add(Comments);
_db.SaveChanges();
return RedirectToAction("index", "Home");
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Edit/5|
public ActionResult Edit(int id)
{
var Comments = _db.Comments.Single(a => a.CommentId == id);
return View(Comments);
}
//
// POST: /Home/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var Comments = _db.Comments.Find(id);
try
{
if (TryUpdateModel(Comments))
{
_db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(Comments);
}
}
catch
{
return View(Comments);
}
}
//
// GET: /Home/Delete/5
public ActionResult Delete(int id)
{
return View(_db.Comments .Find (id));
}
//
// POST: /Home/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
// TODO: Add delete logic here
var comments = _db.Comments.Find(id);
_db.Comments.Remove(comments);
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}
Step 6:
Now run the following code. You will insert, update, delete and see the details data in the application. In this application I did not do any designing.
So now you can get a good basic idea of ASP.Net MVC3 razor applications with Entity Framework.
This application is being made by VS 2010. I have uploaded the source code here.