ตัวอย่าง
หากต้องการแก้ไข Display Name สามารถกำหนดผ่านไฟล์ Models/Movie.cs
เช่น
using System;using System.ComponentModel.DataAnnotations;using System.Data.Entity; namespace MvcMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; }[Display(Name = "Release Date")]public string Genre { get; set; } public decimal Price { get; set; } } public class MovieDBContext : DbContext { public DbSet<Movie> Movies { get; set; } } }
จากการเพิ่มข้างต้นจะทำให้เวลา Run Application จะได้ผลดังภาพ ซึ่งให้ผลการเปลี่ยนคำแสดงทุกๆ Mode
ตัวอย่าง
สังเกตได้ว่าหากเอา Mouse Over ที่ Hyperlink จะมี URL แสดงที่แตกต่างตาม ID ของข้อมูล
โดย Link ดังกล่าวจะถูกสร้างโดย Html.ActionLink ที่ผ่านการทำงานของ Views/Movies/Index.cshtml
<td> @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |@Html.ActionLink("Details", "Details", new { id=item.ID }) | @Html.ActionLink("Delete", "Delete", new { id=item.ID }) </td>
โดยที่ id ถูกสร้างที่ App_Start/RouteConfig.cs ด้วย Pattern
{controller}/{action}/{id}
ตัวอย่าง
การป้องกัน Hacker Post ข้อมูลเปลี่ยนแปลงข้อมูล Model เราจำเป็นที่จะต้องใช้ ValidateAntiforgeryToken ที่ Mode Edit ของ MovieController.cs ตามตัวอย่างดังนี้
// GET: /Movies/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // POST: /Movies/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="ID,Title,ReleaseDate,Genre,Price")] Movie movie){ if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); }
ซึ่งการทำงานของ ValidateAntiforgeryToken มีความจำเป็นที่ต้องทำงานควบคู่กับ @Html.AntiForgeryToken ภายใต้ File View/Movies/Edit.cshtml ดังนี้
@model MvcMovie.Models.Movie @{ ViewBag.Title = "Edit"; } <h2>Edit</h2> @using (Html.BeginForm()) {@Html.AntiForgeryToken()<div class="form-horizontal"> <h4>Movie</h4> <hr /> @Html.ValidationSummary(true) @Html.HiddenFor(model => model.ID) <div class="form-group"> @Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Title) @Html.ValidationMessageFor(model => model.Title) </div> </div>



No comments:
Post a Comment