2009/Feb/19

โดยปกติ  เวลาที่เราจะส่งค่าใน  form  ให้ controller เราสามารถที่จะใช้ DefaultModelBinder ในการส่งค่าให้  Method ใน  controller  นำไป  process  ได้ นอกจากนี้เราสามารถ ส่งค่าในรูปแบบอื่นๆได้อีก อาทิเช่น  Array,ArrayList , IEnumerable, ICollection, IList, T[], Collection,  และ List

 เช่น 

ใน หน้า  update  ในส่วนของ controller

public ActionResult Update(IList<int> ints) {  
   return View(ints);
}
ในส่วนของ  html

<form method="post" action="/Home/Update">
   
<input type="text" name="ints" value="1" />
   
<input type="text" name="ints" value="4" />
   
<input type="text" name="ints" value="2" />
   
<input type="text" name="ints" value="8" />
   
<input type="submit" />
form>

อีกตัวอย่างหนึ่ง ในกรณีที่เราส่งค่าที่ซับซ้อนขึ้น

public class Customer {
   
public decimal Id { get; set; }
   
public string Name { get; set; }
}

//Action method on HomeController
public ActionResult UpdateCustomers(IList<Customers> customers) {
   
return View(customers);
}

ในส่วนของ Html

<form method="post" action="/Home/UpdateCustomers">

   
<input type="hidden" name="customers.Index" value="0" />
   
<input type="text" name="customers[0].Name" value=John" />
   
   
<input type="hidden" name="customers.Index" value="1" />
   
<input type="text" name="customers[1].Name" value="Ann" />
   
   
<input type="hidden" name="customers.Index" value="2" />
   
<input type="text" name="customers[2].Name" value="Sara" />
   
   
<input type="submit" />
form>

เราสามารถ กำหนด  Index เป็นอะไรก็ได้  ไม่ใช่แค่ 0  เสมอ ไป

อีกกรณีหนึ่ง ถ้าหากเราใช้  IDictionary

public ActionResult Update(IDictionary<string, Customers> stocks) {
  
return View(stocks);
}

ในส่วนของ Html

<input type="text" name="stocks[0].Key" value="CUS01" />
<input type="text" name="stocks[0].Value.Name" value="John" />
<input type="text" name="stocks[0].Value.Name" value="Anna" />
<input type="text" name="stocks[1].Key" value="CUS02" />
<input type="text" name="stocks[1].Value.Name" value="Sara" />

Comment

Comment:

Tweet


snippet.googalz.com
View full profile