ASP.NET

Monday, July 10, 2017

Focus การทำงานที่ Mode Edit

Post นี้จะมา Focus การทำงานที่ Mode Edit

ตัวอย่าง
หากต้องการแก้ไข 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

เชื่อม SQL Server บน VMWare ผ่าน SQL Server Management Studio ที่เครื่อง Client

หากติดตั้ง SQL Server ต่างเครื่องคอมพิวเตอร์ที่เราต้องการ Develop จะต้อง Set ค่าเพิ่มเติมผ่าน SQL Server Configuration Server ด้วย เพราะไม...