Tôi tò mò về tất cả các cách khác nhau mà mọi người đang xây dựng Mô hình Chế độ xem của họ và tại sao họ chọn phương thức đó.Làm cách nào để bạn điền/xác thực Mô hình Chế độ xem của mình?
Tôi có thể nghĩ ra một số cách ở đây:
-1. Kho chứa được tiêm - bộ điều khiển tải mô hình và ánh xạ tới ViewModel. Ở đây, hàm tạo ViewModel có thể lấy các bộ sưu tập khác nhau để thiết lập cho nhau. trong danh sách lựa chọn như:
public CustomerController(ISomeRepository repository)
{
_repository = repository;
}
public ActionResult Create()
{
CustomerCreateViewModel model = new CustomerCreateViewModel(_repository.GetShipTypes,
_repository.GetStates);
..
..
}
-2. ViewModelBuilder - Hoặc được tiêm hoặc khởi tạo trong bộ điều khiển với một thể hiện của kho lưu trữ được tiêm. Gọi qua một cái gì đó giống như
>var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
hay,
var orderViewModel = orderViewModelBuilder.WithStates().Build(orderId);
-3. Trực tiếp trong bộ điều khiển (không cần mã - lộn xộn)
-4. Một số dịch vụ khác (tiêm hay không) trả về mô hình miền mà bộ điều khiển sau đó bản đồ hoặc một ViewModel (bất cứ ai làm điều này để trả về một mô hình điểm cho rằng không được đặt tên đặc biệt/ghi nhận như là một lớp người xây dựng ViewModel?)
public JobCreateViewModel BuildJobCreateViewModel(int parentId)
{
JobCreateViewModel model = new JobCreateViewModel();
model.JobStatus = _unitOfWork.JobRepository.GetJobStatuses();
model.States=_unitOfWork.StateRepository.GetAll();
return model;
}
Bây giờ trên chuyến trở về - liên quan đến việc xác nhận các mô hình xem của bạn - bạn có kế thừa từ lớp ViewModel cơ bản để xác thực tiêu chuẩn hay sao chép các xác thực của bạn (ví dụ: thuộc tính chú thích dữ liệu) giữa tất cả các Mô hình Chế độ xem của bạn hay đơn giản là dựa vào xác thực phía máy chủ tất cả có thể được xác thực againt đối tượng miền của bạn?
Mọi người khác? Có gì tốt hơn không? Tại sao?
EDIT Dựa trên liên kết bên dưới, tôi đã tìm thấy một bài viết hay từ Jimmy Bogard về kiến trúc của ViewModels. Mặc dù nó không trực tiếp giải quyết câu hỏi trên, nhưng đây là một tham chiếu tuyệt vời cho bất kỳ ai đến đây để biết thông tin ViewModel. http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/
có một lưu ý ở đây - chỉ cần tò mò tại sao - bất cứ điều gì tôi có thể làm rõ? –
Trên điện thoại của tôi và tôi vô tình nhấp vào nó khi cố gắng gắn dấu sao - xin lỗi. Bây giờ đã quá muộn để hoàn tác. – Jason
ah không phải lo lắng sau đó:) –