Tôi muốn nhận được một số ràng buộc làm việc trong ứng dụng mvc của tôi. Tôi tìm thấy thuộc tính lồng nhau không tự động bị ràng buộc bởi các chất kết dính mô hình mặc định trong việc phát hành RC1 của asp.net MVC. Tôi có cấu trúc lớp sau:Mô hình ràng buộc các thuộc tính lồng nhau trong asp.net mvc
public class Contact{
public int Id { get; set; }
public Name Name { get; set; }
public string Email { get; set; }
}
đâu Name
được định nghĩa là:
public class Name{
public string Forename { get; set; }
public string Surname { get; set; }
}
Quan điểm của tôi được xác định dọc theo dòng:
using(Html.BeginForm()){
Html.Textbox("Name.Forename", Model.Name.Forename);
Html.Textbox("Name.Surname", Model.Name.Surname);
Html.Textbox("Email", Model.Email);
Html.SubmitButton("save", "Save");
}
controller action của tôi được định nghĩa là:
public ActionResult Save(int id, FormCollection submittedValues){
Contact contact = get contact from database;
UpdateModel(contact, submittedValues.ToValueProvider());
//at this point the Name property has not been successfully populated using the default model binder!!!
}
Thuộc tính Email
bị ràng buộc thành công nhưng không phải là thuộc tính Name.Forename
hoặc Name.Surname
. Bất cứ ai có thể cho biết nếu điều này nên làm việc bằng cách sử dụng chất kết dính mô hình mặc định và tôi đang làm điều gì sai hoặc nếu nó không hoạt động và tôi cần phải cuộn mã của riêng tôi để ràng buộc thuộc tính lồng nhau trên các đối tượng mô hình?
Điều này hoạt động tuyệt vời, Cảm ơn tvanfosson. –
SingleOrDefault có thể được gọi trực tiếp với biểu thức lamda –
@PhilippM bạn hoàn toàn đúng, cập nhật! – tvanfosson