ฉันหลงทางในโครงการ MVC ที่ฉันกำลังทำอยู่ ฉันยังอ่านบทความของแบรดวิลสันด้วย http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html
ฉันมีสิ่งนี้:
public class Employee
{
[Required]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
และสิ่งเหล่านี้อยู่ในคอนโทรลเลอร์:
public ActionResult Edit(int id)
{
var emp = GetEmployee();
return View(emp);
}
[HttpPost]
public ActionResult Edit(int id, Employee empBack)
{
var emp = GetEmployee();
if (TryUpdateModel(emp,new string[] { "LastName"})) {
Response.Write("success");
}
return View(emp);
}
public Employee GetEmployee()
{
return new Employee {
FirstName = "Tom",
LastName = "Jim",
ID = 3
};
}
และความเห็นของฉันมีดังต่อไปนี้:
<% using (Html.BeginForm()) {%>
<%= Html.ValidationSummary() %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.FirstName) %>
</div>
<div class="editor-field">
<%= Html.DisplayFor(model => model.FirstName) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.LastName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxOrLabelFor(model => model.LastName, true)%>
<%= Html.ValidationMessageFor(model => model.LastName) %>
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
โปรดทราบว่าฟิลด์เดียวที่สามารถแก้ไขได้คือนามสกุล เมื่อฉัน postback ฉันจะกลับไปหาพนักงานคนเดิมและพยายามอัปเดตด้วยคุณสมบัติ LastName เท่านั้น แต่ฉันเห็นในหน้านี้มีข้อผิดพลาดต่อไปนี้:
•จำเป็นต้องกรอกฟิลด์ชื่อ
จากสิ่งที่ฉันเข้าใจเป็นเพราะ TryUpdateModel ล้มเหลว แต่ทำไม? ฉันบอกให้อัปเดตเฉพาะคุณสมบัติ LastName
ฉันกำลังใช้ MVC2 RTM
ขอบคุณล่วงหน้า.