Trong thuật ngữ của giáo dân, những gì hiện UpdateModel()
làm, cũng như TryUpdateModel()
? Tôi không thể tìm thấy (trên SO hoặc web) bất kỳ lời giải thích rõ ràng về những gì nó thực sự làm (trong điều khoản rõ ràng), chỉ những người gặp vấn đề khi sử dụng nó.UpdateModel() làm gì?
IntelliSense của VisualStudio cũng không giúp ích cho tôi. Lý do tại sao tôi hỏi là bởi vì, chúng ta hãy nói, nếu tôi có điều này trong bộ điều khiển của tôi:
[HttpPost]
public ActionResult Index(UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
return View(vm);
}
Không phải tôi đã cập nhật mô hình của tôi bằng cách thiết lập vm.BA.StatesTraveledTo
? Tại sao tôi cần chạy UpdateModel? Ngoài ra, khi tôi thực sự cố gắng để làm như sau:
[HttpPost]
public ActionResult Index(UserViewModel vm, FormCollection form)
{
var statesCheckBoxes = form["StatesList"];
vm.BA.StatesTraveledTo = statesCheckBoxes.Split(',').ToList<string>();
UpdateModel(vm); // IS THIS REDUNDANT TO THE PREVIOUS LINE?
return View(vm);
}
Không có gì có thể xảy ra trong khi tôi kiểm tra giá trị của ModelState (sau khi tôi chạy UpdateModel()), tôi không thấy bất cứ điều gì chứng tỏ rằng bất cứ điều gì đã thay đổi. Tôi không thấy một khóa mới trong từ điển ModelState.
Thực sự nhầm lẫn. Cảm ơn!
Edit:
gửi bài mã nguồn cho các lớp ViewModel và Model:
public class UserViewModel
{
public BankAccount BA { get; set; }
}
public class BankAccount
{
public Person User { get; set; }
public List<string> StatesTraveledTo { get; set; }
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Đây là mã nguồn cho nó: http://aspnet.codeplex.com/SourceControl/changeset/view/72551#266451 Nó khá đơn giản, chỉ cần tạo ra một ModelBindingContext và liên kết nó –
Ngoài ra, nó có phần hiếm khi vượt qua cùng một đối tượng mà bạn nhận được như là đầu vào trong một hành động vào xem, nó xảy ra nhưng nó hiếm và điều này không có vẻ giống như một trong những sử dụng đó. Thông thường, bạn lấy làm đầu vào một đối tượng đại diện cho dữ liệu được đăng và sau đó tạo một mô hình riêng cho chế độ xem –
Cảm ơn. Lý do tại sao tôi vượt qua mô hình trở lại xem là cho mục đích xác nhận. Vì vậy, trong trường hợp xác thực không thành công, tôi muốn mô hình và các giá trị của nó được chuyển đến khung nhìn sao cho các trường biểu mẫu được nhận lại và thông báo lỗi được hiển thị. Xin lỗi, tôi đoán với mã tôi đã cho thấy, nó có thể không giống như một ví dụ thực tế. – SaltProgrammer