Skip to content

Welcome to Ron Eaglin Online

The Collective Works of Dr Ron Eaglin

Menu
  • Organizations
  • Adventures
  • Courses
  • Projects
Menu

Restaurant Menu Case Study Part 2 – Creating a Custom View

Restaurant Menu Case Study Part 2 – Creating a Custom View

Prerequisites

 

Summary

By simply adding a method to an existing controller and a new custom view copied from an existing view, we can create a custom view for our menu project.

Video

[yourchannel video=”HWq7vKNuhu8″]

Reference Materials

using System;
using System.Collections.Generic;
 using System.Data;
 using System.Data.Entity;
 using System.Linq;
 using System.Net;
 using System.Web;
 using System.Web.Mvc;
 using COP4709MenuDatabase.Models;

namespace COP4709MenuDatabase.Controllers
 {
 public class MenusController : Controller
 {
 private COP4709MenuDatabaseContext db = new COP4709MenuDatabaseContext();// GET: Menus

 public ActionResult Index()
 {
 return View(db.Menus.ToList());
 }// GET: Menus/Details/5

 public ActionResult Details(int? id)
 {
 if (id == null)
 {
 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
 }

 Menu menu = db.Menus.Find(id);
 if (menu == null)
 {
 return HttpNotFound();
 }
 return View(menu);
 }
public ActionResult ViewMenu(int? id)
 {
 if (id == null)
 {
 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
 }
 Menu menu = db.Menus.Find(id);
 if (menu == null)
 {
 return HttpNotFound();
 }
 return View(menu);
 }

// GET: Menus/Create
 public ActionResult Create()
 {
 return View();
 }

// POST: Menus/Create
 // To protect from overposting attacks, please enable the specific properties you want to bind to, for
 // more details seeĀ http://go.microsoft.com/fwlink/?LinkId=317598.
 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Create([Bind(Include = "MenuID,MenuTitle,MenuDescription")] Menu menu)
 {
 if (ModelState.IsValid)
 {
 db.Menus.Add(menu);
 db.SaveChanges();
 return RedirectToAction("Index");
 }

return View(menu);
 }

// GET: Menus/Edit/5
 public ActionResult Edit(int? id)
 {
 if (id == null)
 {
 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
 }
 Menu menu = db.Menus.Find(id);
 if (menu == null)
 {
 return HttpNotFound();
 }
 return View(menu);
 }

// POST: Menus/Edit/5
 // To protect from overposting attacks, please enable the specific properties you want to bind to, for
 // more details seeĀ http://go.microsoft.com/fwlink/?LinkId=317598.
 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Edit([Bind(Include = "MenuID,MenuTitle,MenuDescription")] Menu menu)
 {
 if (ModelState.IsValid)
 {
 db.Entry(menu).State = EntityState.Modified;
 db.SaveChanges();
 return RedirectToAction("Index");
 }
 return View(menu);
 }

// GET: Menus/Delete/5
 public ActionResult Delete(int? id)
 {
 if (id == null)
 {
 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
 }
 Menu menu = db.Menus.Find(id);
 if (menu == null)
 {
 return HttpNotFound();
 }
 return View(menu);
 }

// POST: Menus/Delete/5
 [HttpPost, ActionName("Delete")]
 [ValidateAntiForgeryToken]
 public ActionResult DeleteConfirmed(int id)
 {
 Menu menu = db.Menus.Find(id);
 db.Menus.Remove(menu);
 db.SaveChanges();
 return RedirectToAction("Index");
 }

protected override void Dispose(bool disposing)
 {
 if (disposing)
 {
 db.Dispose();
 }
 base.Dispose(disposing);
 }
 }
 }
@model COP4709MenuDatabase.Models.Menu

@{
 ViewBag.Title = "Details";
 }

<h2>Details</h2>

<div>
 <h4>Menu</h4>
 <hr />
 <dl class="dl-horizontal">
 <dt>
 @Html.DisplayNameFor(model => model.MenuTitle)
 </dt>

<dd>
 @Html.DisplayFor(model => model.MenuTitle)
 </dd>

<dt>
 @Html.DisplayNameFor(model => model.MenuDescription)
 </dt>

<dd>
 @Html.DisplayFor(model => model.MenuDescription)
 </dd>

</dl>

<table>
 <tr>
 <th>Item</th>
 <th>Description</th>
 <th>Cost</th>
 </tr>

@foreach (var item in Model.MenuItems)
 {
 <tr>
 <td>
 @Html.DisplayFor(modelItem => item.MenuItemTitle)
 </td>
 <td>
 @Html.DisplayFor(modelItem => item.MenuItemDescription )
 </td>
 <td>
 @Html.DisplayFor(modelItem => item.MenuItemCost )
 </td>

</tr>
 }
 </table>

</div>

<p>
 @Html.ActionLink("Edit", "Edit", new { id = Model.MenuID }) |
 @Html.ActionLink("Back to List", "Index")
 </p>

 

Menu Case Study Part 3 –

Menu Case Study Part 4 – Generating a Javascript call from a Razor Object

Additional Information

COP 4834 Lectures Page

© 2026 Welcome to Ron Eaglin Online | Powered by Minimalist Blog WordPress Theme