Saya tersesat dalam proyek MVC yang sedang saya kerjakan. Saya juga membaca artikel Brad Wilson. http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html
Aku punya ini:
public class Employee
{
[Required]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
dan ini di pengontrol:
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
};
}
dan pandangan saya adalah sebagai berikut:
<% 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>
<% } %>
Perhatikan bahwa satu-satunya bidang yang dapat diedit adalah Nama Belakang. Ketika saya melakukan postback, saya mendapatkan kembali karyawan asli dan mencoba memperbaruinya dengan hanya properti LastName. Tapi saya melihat di halaman itu ada kesalahan berikut:
•Bidang Nama Depan wajib diisi.
Dari apa yang saya pahami, ini karena TryUpdateModel gagal. Tapi kenapa? Saya menyuruhnya untuk memperbarui hanya properti LastName.
Saya menggunakan MVC2 RTM
Terima kasih sebelumnya.