2009-06-02 31 views
8

Làm thế nào để bạn đặt đối tượng được nhập mạnh mẽ trong ASP.NET MVC vào trang chính?Làm cách nào để đưa dữ liệu vào Trang chủ?

Bạn có lớp học ViewModelBase chứa thông tin trang chính và kế thừa từ nó cho mỗi mô hình chế độ xem hay có cách tiếp cận tốt hơn không?

+0

Có tình huống hợp lệ để thực hiện việc này không? Nói chung, xem nội dung cụ thể sẽ được hiển thị trong chế độ xem, trang chính chỉ nên cung cấp các yếu tố chung phù hợp với những gì chế độ xem đang tạo. –

+0

Có lẽ tôi đã hoàn toàn tắt ở đây, nhưng tôi nghĩ tôi sẽ sử dụng chế độ xem được nhập mạnh mẽ nếu tôi cần thêm những thứ như tên người dùng hiện đang đăng nhập, v.v. vào trang chính. Làm thế nào khác tôi sẽ làm điều này nếu không thông qua ViewModel thats cho trang? – Alex

+0

Giả sử bạn đang sử dụng phương pháp xác thực chuẩn, ví dụ: Xác thực biểu mẫu, sau đó có thể thực hiện việc đó bằng cách sử dụng <% = HttpContext.Current.User.Identity.Name%> –

Trả lời

10

Alex,

Tôi nghĩ rằng những gì bạn đang yêu cầu là, "ở đâu điều khiển trang chủ của tôi?"

Hãy xem liên kết sau. Nó giải thích cách tạo một "Application Controller", một lớp trừu tượng có thể được thừa hưởng bởi các bộ điều khiển khác của bạn, do đó bạn chỉ phải viết mã một lần để đẩy dữ liệu trang chủ cần thiết của bạn vào khung nhìn.

Đi qua dữ liệu để xem Master Pages:
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx

Ngoài ra, có một cái nhìn tại liên kết sau, điều này giải thích làm thế nào để thực hiện xem phần và Subcontrollers trong ASP.NET MVC:

yêu cầu một phần trong ASP.NET MVC
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

+0

liên kết dường như không hoạt động nữa. Mục mới phải là [http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs](http://www.asp.net/mvc/tutorials/pass-data-to-view-master-pages-cs) –

3

Đó chính xác là cách tiếp cận mà tôi sử dụng. Có một lớp cơ sở MasterViewData chứa thông tin có thể là phổ biến cho tất cả các trang và được sử dụng để hiển thị trang chính (người dùng đã đăng nhập khi không sử dụng thông báo cấp trang được tạo sẵn). Tất cả các lớp dữ liệu chế độ xem khác của tôi bắt nguồn từ nó.

Tôi cũng làm những gì mà Robert đề cập: Tôi có một lớp điều khiển cơ sở ghi đè phương thức Xem, điều này thực sự xử lý việc đưa một số thông tin trang chính vào các lớp chế độ xem.

Tôi tò mò nếu có các tùy chọn khác, nhưng cách tiếp cận này chắc chắn đã làm việc tốt cho tôi.

0

Chúng tôi sử dụng Cơ sở dữ liệu ViewData cơ sở tương tự, đặc biệt là cho các trang web công khai có định hướng nội dung lớn, nơi bạn có rất nhiều công cụ giao diện người dùng phổ biến đang diễn ra.

Bí quyết chúng tôi sử dụng để tiêm bit chung là sử dụng ActionFilter để tiêm MasterPageViewModel xung quanh bộ điều khiển của chúng tôi trở lại. Điều này khá hơn một chút so với việc có một lớp điều khiển đặc biệt với một phương thức xem được ghi đè vì có những nơi chắc chắn mà bạn không muốn/cần nó. Và toàn bộ thành phần trên điều thừa kế.

+0

Bạn có bất kỳ ví dụ mã nào Wyatt không? Tôi rất thích cách bạn quản lý điều đó. – lloydphillips

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