2011-08-11 39 views
9

Cho phép nói rằng tôi có một LineItem (từ ví dụ về Giỏ hàng đã qua sử dụng) và tôi muốn hiển thị nó bằng cách sử dụng EditorTemplate.Truyền dữ liệu bổ sung cho EditorTemplate

Tôi hoàn toàn không sao vẽ được bằng cách sử dụng @ Html.EditorFor (m => m.LineItems) từ chế độ xem gốc (một phần hoặc cách khác), nhưng điều khó hiểu là cách tiếp cận tốt nhất để chuyển một số dữ liệu bổ sung (giả sử SelectList có dữ liệu đến từ cơ sở dữ liệu) vào mẫu.

Rõ ràng tôi không nên gây ô nhiễm mô hình LineItem bằng cách thêm các mặt hàng không liên quan (tuy nhiên được yêu cầu từ góc nhìn của một người xem.)

Tôi cố gắng để xem nếu có một cách gõ mạnh để làm điều này trước khi phải cho thủ thuật ViewBag/ViewData.

Tôi đã thử tạo mô hình chế độ xem cụ thể 'LineItem' để truyền dữ liệu, nhưng nó mang tên các tên được tạo bởi MVC và thêm một lớp phụ vào bộ sưu tập (khi tôi chuyển vào một số không thể xem) của viewmodel vào cuộc gọi EditorFor(), thay vì IEnumerable <> của LineItem thực tế)

Ngoài ra, đây có phải là cách sử dụng sai của EditorTemplate không? Một LineItem có yêu cầu một trình đơn thả xuống có các tùy chọn đến từ một bảng cơ sở dữ liệu quá nhiều cho một EditorTemplate không?

Vui lòng hướng dẫn tôi về phía niết bàn MVC. Trong khi chờ đợi câu trả lời, tôi sẽ thử các ý tưởng khác!

Để làm rõ: Lý do tôi đang cân nhắc sử dụng EditorTemplate là do việc xử lý thu thập tự động mà nó dành cho tôi. Nếu không, toàn bộ doanh nghiệp [id] trở nên quá dính.

+0

Bạn không thể sử dụng ChildAction cho điều này? – alexn

+0

Bạn đã giải quyết vấn đề này kể từ đó? –

+0

Hành động con không phải là cách tốt nhất để tạo giao diện người dùng đầu vào. Tôi đã giải quyết vấn đề này bằng cách sử dụng một biến thể của phương thức Steven Sanderson (http://blog.stevensanderson.com/) để hiển thị danh sách các khung nhìn một phần. – kidoman

Trả lời

11

Tôi đã gặp phải sự cố tương tự gần đây và tìm thấy giải pháp this.

Để tóm tắt, bạn nên tạo mô hình chế độ xem tùy chỉnh của bạn gói bộ sưu tập gốc và dữ liệu hỗ trợ bắt buộc. Sau đó, trong giao diện gọi mẫu tùy chỉnh, bạn có thể sử dụng quá tải phương thức mở rộng HtmlHelper để chuyển dữ liệu hỗ trợ tới từ điển ViewData. Từ mẫu tùy chỉnh của bạn, bạn có thể truy xuất và sử dụng chúng frin ViewData.

Tôi nghĩ đây là giải pháp tốt và về cơ bản đây là mô hình xem, ít nhất nó tốt hơn nhiều so với mở rộng hoặc phát sinh từ lớp gốc chỉ để cung cấp thêm dữ liệu cho chế độ xem.

Vui lòng cho tôi biết nếu nó phù hợp với kịch bản của bạn hoặc nếu bạn tìm thấy bất kỳ giải pháp nào khác.

+0

Mặc dù tôi đã kết thúc triển khai nó mà không có EditorTemplates, đây là những gì tôi đã sử dụng với Editor Templates. – kidoman

+0

Cảm ơn, trang được liên kết hữu ích –

+0

URL đã thay đổi ... họ phải đã chuyển đổi CMS: http://weblogs.asp.net/jongalloway//using-viewmodel-information-in-an-asp-net-mvc -2-editor-hoặc-display-template –

Các vấn đề liên quan