- เพิ่ม templates ของ ViewPage , ViewMasterPage , ViewUserControls
ดู การ Inherits ของ @ Master Directive
ViewUserControls
<mvc:ViewType runat="server" TypeName="ViewUserControl">
- เพิ่มคำสั่ง "Add Controller" ใน Visual Studio

- เพิ่มคำสั่ง "Add View" ใน Visual Studio 2008 โดยการ Click ขวา ใน action method ของ Controller หรือ ตรง View Folder ใน Solution Explorer หรือ กด CTRL+M , CTRL+V ภายในจะมี features คือ

1. สามารถสร้าง Viewpage หรือ ViewUserControl ( คลิ๊กเลือกที่ "Create a partial view (.ascx)")
2. มี Option Strongly-typed view
3. มี Option View content ได้แก่ List, Edit ,Create และก็ Detail
4. สามารถเลือก master page สำหรับแต่ล่ะ ViewPage
- เพิ่มคำสั่ง "Go to View"
- เพิ่มคำสั่ง "Go to Controller"
- MVC File Refactoring
ถ้าหากเราต้องการ rename controller class หรือ action method
Controller Class
Action method

เราสามารถใช้ Refactor > Rename.. เพื่อ Rename ชื่อ class และ ส่วนที่เกี่ยวข้องทั้งหมดโดยอัตโนมัติ

- โดยปกติแล้ว error ที่อยู่ใน view จะไม่สามารถตรวจพบจนกระทั้งถึงตอน runtime ใน mvc rc สามารถกำหนดให้ error สามารถตรวจพบตอน compile time ได้โดย การเปิด project file และแก้ไข ในส่วนของ ตาม code ด้านล่าง
<MvcBuildViews>trueMvcBuildViews>
ในบรรทัดสุดท้าย ของ project file ให้ uncomment เพิ่ม code ดังนี้
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)"></Target>
- เพิ่ม " BeginRouteForm " จะคล้ายๆกัล Html.BeginForm ต่างตรงที่ สามารถกำหนด route name ได้- เปลี่ยนคำสั่งจาก IsMvcAjaxRequest เป็น IsAjaxRequest
- เพิ่ม Jquery Intellisense file ติดมาตอนสร้าง project ใหม่ (Project tempate) เราสามารถดึงมาใช้เป็น help สำหรับมือใหม่ jquery
- เปลี่ยนแปลง DropDownList และ ListMethod ย้าน enumuration จาก IEnumuration เป็น IENumeration ทำให้เราสามารถ Bind data จาก LINQ ไปเก็บ ใน dropdownlist ได้ เช่น
IEnumerable peopleList = from person in db.People
select new SelectListItem {
Text = (person.FirstName + " " + person.LastName),
Value = person.SSN,
Selected = (person.SSN == selectedSSN) };
- มีตัว Helper สามารถ ป้องกัน CSRF Attacks
CSRF (Cross-Site request forgery) หรือ XSRF Attacks มีสาเหตุมาจากการพิสุจน์ user ที่ใช้งานใน browser มีตัวตนและเข้าใช้งานเวบไซด์อย่างถูกต้อง ไม่ใช่การ post ข้อมูลเข้ามา จากแหล่งเวบไซด์อื่น หลักการทำงานของ helper ตัวนี้จะทำการ สร้าง user’s authentication token ให้ client แต่ล่ะตัว และ ทำการ check ค่า token ใน ฝั่ง server ฝั่ง server จะทำการ check ค่า token
[ValidateAntiForgeryToken]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product product) {
//Some code
}
หรือ
[AcceptVerbs(HttpVerbs.Post),ValidateAntiForgeryToken]
public ActionResult Edit(Product product) {
//Some code
}
- เพิ่ม File Helper และ FileResult Type return content ที่เป็น Binary
return File(@"c:\temp\test.png");
ถ้า Action เป็น FileResult >> จะ return
FilePathResult path to the response
FileStreamResult stream to the response
FileContentResult byte array to the response
- Form Helper เปลี่ยน dot (.) ไปเป็น underscore เมื่อมีการใช้ arrtibute ID , เช่น
MVC Beta
<input type="text" name="Person.FirstName" id="Person.FirstName">
ถ้าเราใช้ jquery ในการดึงข้อมูลใน element input
$("#Person\\.FirstName")
MVC RC
<input type="text" name="Person.FirstName" id="Person_FirstName">
หรือ อาจจะใช้ HtmlHelper.IDDotReplacementChar แทนก็ได้
- [Bind(Prefix="")]
โดยปกติ ถ้าเราสร้าง action method และ renders edit form โดยใช้ products strongly typed view
public ActionResult Edit(int id) {
//Some code
Product product = someRepository.GetProductById();
return View(product);
}
สามารถสร้าง form จาก html helper Name: Price: สังเกตว่าจะไม่มี prefix "product" นอกจากนั้นเวลาที่เรา post ข้อมูลที่เป็น object เข้ามายัง action method เช่น
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product product) {
//Some code
}
โดยปกติเราจะอ้างอิง prefix หรือ เราไม่ต้องอ้างอิง prefix product ก็ได้หากเราเขียนแบบนี้
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit([Bind(Prefix = "")]Product product) {
//Some code
}
อีกวิธีหนึ่งคือการนำเอา object product เข้าไปเก็บใน ViewData
public ActionResult Edit(int id) {
//Some code
Product product = someRepository.GetProductById();
ViewData["product"] = product; return View();
}
แบบนี้เราสามารถใช้ prefix product ใน html helper ได้เช่นกันName: Price:
- เราสามารถสร้างและ execute javascriptResult และ Javascript Controller เช่น
public ActionResult DoSomething() {
script s = "$('#some-div').html('Updated!');";
return JavaScript(s);
}
เราอาจจะใช้ Ajax เป็นตัวเรียกใช้ method นี้ได้
<div id="some-div">div>
