From 9c7c661ce04df856ad3648bca28f54025a514d33 Mon Sep 17 00:00:00 2001 From: syneffort Date: Thu, 18 May 2023 17:56:17 +0900 Subject: [PATCH] mvc scaffold for ef --- .../AspNetFrameworkMVC.csproj | 6 + .../Controllers/GuestsController.cs | 127 ++++++++++++++++++ .../Views/Guests/Create.cshtml | 56 ++++++++ .../Views/Guests/Delete.cshtml | 48 +++++++ .../Views/Guests/Details.cshtml | 42 ++++++ .../Views/Guests/Edit.cshtml | 58 ++++++++ .../Views/Guests/Index.cshtml | 45 +++++++ 7 files changed, 382 insertions(+) create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Controllers/GuestsController.cs create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Create.cshtml create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Delete.cshtml create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Details.cshtml create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Edit.cshtml create mode 100644 AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Index.cshtml diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/AspNetFrameworkMVC.csproj b/AspNetFrameworkMVC/AspNetFrameworkMVC/AspNetFrameworkMVC.csproj index 311271f..2cf5548 100644 --- a/AspNetFrameworkMVC/AspNetFrameworkMVC/AspNetFrameworkMVC.csproj +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/AspNetFrameworkMVC.csproj @@ -127,6 +127,7 @@ + Global.asax @@ -195,6 +196,11 @@ + + + + + diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Controllers/GuestsController.cs b/AspNetFrameworkMVC/AspNetFrameworkMVC/Controllers/GuestsController.cs new file mode 100644 index 0000000..7b060e2 --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Controllers/GuestsController.cs @@ -0,0 +1,127 @@ +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 AspNetFrameworkMVC.Models; + +namespace AspNetFrameworkMVC.Controllers +{ + public class GuestsController : Controller + { + private GuestDbContext db = new GuestDbContext(); + + // GET: Guests + public ActionResult Index() + { + return View(db.Guests.ToList()); + } + + // GET: Guests/Details/5 + public ActionResult Details(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Guest guest = db.Guests.Find(id); + if (guest == null) + { + return HttpNotFound(); + } + return View(guest); + } + + // GET: Guests/Create + public ActionResult Create() + { + return View(); + } + + // POST: Guests/Create + // 초과 게시 공격으로부터 보호하려면 바인딩하려는 특정 속성을 사용하도록 설정하세요. + // 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=317598을(를) 참조하세요. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Create([Bind(Include = "Id,Name,CreatedDate,Message")] Guest guest) + { + if (ModelState.IsValid) + { + db.Guests.Add(guest); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + return View(guest); + } + + // GET: Guests/Edit/5 + public ActionResult Edit(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Guest guest = db.Guests.Find(id); + if (guest == null) + { + return HttpNotFound(); + } + return View(guest); + } + + // POST: Guests/Edit/5 + // 초과 게시 공격으로부터 보호하려면 바인딩하려는 특정 속성을 사용하도록 설정하세요. + // 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=317598을(를) 참조하세요. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Edit([Bind(Include = "Id,Name,CreatedDate,Message")] Guest guest) + { + if (ModelState.IsValid) + { + db.Entry(guest).State = EntityState.Modified; + db.SaveChanges(); + return RedirectToAction("Index"); + } + return View(guest); + } + + // GET: Guests/Delete/5 + public ActionResult Delete(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Guest guest = db.Guests.Find(id); + if (guest == null) + { + return HttpNotFound(); + } + return View(guest); + } + + // POST: Guests/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public ActionResult DeleteConfirmed(int id) + { + Guest guest = db.Guests.Find(id); + db.Guests.Remove(guest); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + db.Dispose(); + } + base.Dispose(disposing); + } + } +} diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Create.cshtml b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Create.cshtml new file mode 100644 index 0000000..1e9b74d --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Create.cshtml @@ -0,0 +1,56 @@ +@model AspNetFrameworkMVC.Models.Guest + +@{ + ViewBag.Title = "Create"; +} + +

Create

+ + +@using (Html.BeginForm()) +{ + @Html.AntiForgeryToken() + +
+

Guest

+
+ @Html.ValidationSummary(true, "", new { @class = "text-danger" }) +
+ @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) +
+
+ +
+ @Html.LabelFor(model => model.CreatedDate, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.CreatedDate, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.CreatedDate, "", new { @class = "text-danger" }) +
+
+ +
+ @Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.Message, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" }) +
+
+ +
+
+ +
+
+
+} + +
+ @Html.ActionLink("Back to List", "Index") +
+ +@section Scripts { + @Scripts.Render("~/bundles/jqueryval") +} diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Delete.cshtml b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Delete.cshtml new file mode 100644 index 0000000..45e673e --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Delete.cshtml @@ -0,0 +1,48 @@ +@model AspNetFrameworkMVC.Models.Guest + +@{ + ViewBag.Title = "Delete"; +} + +

Delete

+ +

Are you sure you want to delete this?

+
+

Guest

+
+
+
+ @Html.DisplayNameFor(model => model.Name) +
+ +
+ @Html.DisplayFor(model => model.Name) +
+ +
+ @Html.DisplayNameFor(model => model.CreatedDate) +
+ +
+ @Html.DisplayFor(model => model.CreatedDate) +
+ +
+ @Html.DisplayNameFor(model => model.Message) +
+ +
+ @Html.DisplayFor(model => model.Message) +
+ +
+ + @using (Html.BeginForm()) { + @Html.AntiForgeryToken() + +
+ | + @Html.ActionLink("Back to List", "Index") +
+ } +
diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Details.cshtml b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Details.cshtml new file mode 100644 index 0000000..4076451 --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Details.cshtml @@ -0,0 +1,42 @@ +@model AspNetFrameworkMVC.Models.Guest + +@{ + ViewBag.Title = "Details"; +} + +

Details

+ +
+

Guest

+
+
+
+ @Html.DisplayNameFor(model => model.Name) +
+ +
+ @Html.DisplayFor(model => model.Name) +
+ +
+ @Html.DisplayNameFor(model => model.CreatedDate) +
+ +
+ @Html.DisplayFor(model => model.CreatedDate) +
+ +
+ @Html.DisplayNameFor(model => model.Message) +
+ +
+ @Html.DisplayFor(model => model.Message) +
+ +
+
+

+ @Html.ActionLink("Edit", "Edit", new { id = Model.Id }) | + @Html.ActionLink("Back to List", "Index") +

diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Edit.cshtml b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Edit.cshtml new file mode 100644 index 0000000..d237780 --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Edit.cshtml @@ -0,0 +1,58 @@ +@model AspNetFrameworkMVC.Models.Guest + +@{ + ViewBag.Title = "Edit"; +} + +

Edit

+ + +@using (Html.BeginForm()) +{ + @Html.AntiForgeryToken() + +
+

Guest

+
+ @Html.ValidationSummary(true, "", new { @class = "text-danger" }) + @Html.HiddenFor(model => model.Id) + +
+ @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) +
+
+ +
+ @Html.LabelFor(model => model.CreatedDate, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.CreatedDate, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.CreatedDate, "", new { @class = "text-danger" }) +
+
+ +
+ @Html.LabelFor(model => model.Message, htmlAttributes: new { @class = "control-label col-md-2" }) +
+ @Html.EditorFor(model => model.Message, new { htmlAttributes = new { @class = "form-control" } }) + @Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" }) +
+
+ +
+
+ +
+
+
+} + +
+ @Html.ActionLink("Back to List", "Index") +
+ +@section Scripts { + @Scripts.Render("~/bundles/jqueryval") +} diff --git a/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Index.cshtml b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Index.cshtml new file mode 100644 index 0000000..98ef1a1 --- /dev/null +++ b/AspNetFrameworkMVC/AspNetFrameworkMVC/Views/Guests/Index.cshtml @@ -0,0 +1,45 @@ +@model IEnumerable + +@{ + ViewBag.Title = "Index"; +} + +

Index

+ +

+ @Html.ActionLink("Create New", "Create") +

+ + + + + + + + +@foreach (var item in Model) { + + + + + + +} + +
+ @Html.DisplayNameFor(model => model.Name) + + @Html.DisplayNameFor(model => model.CreatedDate) + + @Html.DisplayNameFor(model => model.Message) +
+ @Html.DisplayFor(modelItem => item.Name) + + @Html.DisplayFor(modelItem => item.CreatedDate) + + @Html.DisplayFor(modelItem => item.Message) + + @Html.ActionLink("Edit", "Edit", new { id=item.Id }) | + @Html.ActionLink("Details", "Details", new { id=item.Id }) | + @Html.ActionLink("Delete", "Delete", new { id=item.Id }) +