Trong chế độ xem của tôi, tôi có danh sách các mục tôi tìm nạp từ cơ sở dữ liệu và sau đó gửi đến chế độ xem. Tôi muốn biết nếu nó có thể tránh phải nạp tiền các tài sản tùy chọn bất cứ khi nào tôi nhấn một hành động bài và cần phải trả lại mô hình (cho lỗi xác nhận và những gì không)?Sử dụng lại dữ liệu mô hình trong một hành động sau
Trong biểu mẫu web, điều này sẽ không cần thiết.
Chỉnh sửa: Tôi không rõ ràng. Vấn đề của tôi là với các tùy chọn SelectList tôi sử dụng cho DropDownLists của tôi. Tất cả mọi thứ được đăng, nhưng nếu tôi phải quay trở lại xem (mô hình không hợp lệ), tôi phải tải lại các tùy chọn từ cơ sở dữ liệu! Tôi muốn biết nếu điều này có thể tránh được.
viewmodel của tôi:
public class TestModel
{
public TestModel()
{
Departments = new List<SelectListItem>();
}
public string Name { get; set; }
public int Department { get; set; }
public IEnumerable<SelectListItem> Departments { get; set; }
}
Quan điểm của tôi:
@model MvcApplication1.Models.TestModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Name)
@Html.DropDownListFor(m => m.Department, Model.Departments)
<input type=submit value=Submit />
}
điều khiển của tôi (đừng để ý những nhận xét trên HttpPost):
public ActionResult Index()
{
TestModel model = new TestModel
{
Name = "Rafael",
Department = 1,
Departments = new List<SelectListItem>
{
new SelectListItem { Text = "Sales", Value = "1" },
new SelectListItem { Text = "Marketing", Value = "2", Selected = true },
new SelectListItem { Text = "Development", Value = "3" }
}
};
// Departments gets filled from a database.
return View(model);
}
[HttpPost]
public ActionResult Index(TestModel model)
{
if (!ModelState.IsValid)
{
//Do I have to fill model.Departments again!?!?!?
return View(model);
}
else { ... }
}
Cảm ơn trước.
Chỉnh sửa: FYI, giải pháp của tôi là sử dụng biến số Session
.
Chăm sóc để xem chỉnh sửa của tôi? – rebelliard
OK Tôi hiểu ý của bạn bây giờ. Tôi đã gặp vấn đề tương tự với dự án cuối cùng của tôi. Thật không may, sử dụng một bài đăng HTTP vốn sẽ giới hạn mô hình của bạn thành tương đương với các cặp khóa-giá trị. Tức là, bạn không thể có một mô hình phức tạp với nhiều đối tượng nghiệp vụ hơn khi các thuộc tính được trả về cho bộ điều khiển. Vì vậy, bạn sẽ phải lưu trữ danh sách các phòng ban ở đâu đó liên tục. Phiên sẽ thích hợp cho điều này, miễn là bạn xóa nó khi bạn đã hoàn tất. Nếu bạn thực sự, thực sự cần phải gửi các đối tượng qua dây, bạn cần phải sử dụng JSON hoặc một số kỹ thuật tuần tự hóa khác. – jhsowter
Tôi hiểu. Bạn có đề nghị chuyển dữ liệu trở lại từ một JSON bên trong một đầu vào bị ẩn hoặc một đối tượng Session [] không? Cảm ơn. – rebelliard