2009-11-04 39 views
9

Tôi hiện đang sử dụng asp.NET MVC để xây dựng một phần Hệ thống quản lý nội dung của một trang web và có công việc đáng kinh ngạc khi tạo lại tất cả các lượt xem của tôi dưới dạng một phần lượt xem.Điều khiển MVC và Chế độ xem có mối quan hệ 1-1 không?

Ví dụ: FAQAdminController của tôi có Chế độ xem: Chỉ mục, ThêmFAQ, EditFAQ, ConfirmDeleteFAQ và những thứ này phải trở thành một phần lượt xem.

Tôi đã được thông báo rằng mỗi Bộ điều khiển phải có một Chế độ xem duy nhất và tất cả các biểu mẫu hoặc hành động khác kết thúc trong nội dung trang sẽ được hiển thị sẽ được triển khai dưới dạng Chế độ xem từng phần.

Tôi đã kiểm tra trước khi đăng và không có tài liệu, bài viết, wiki hoặc câu hỏi SO cho tôi câu trả lời thẳng về việc có hay không có nhiều Chế độ xem trên mỗi bộ điều khiển đang phá vỡ mô hình MVC.

Nghiêm túc, một Bộ điều khiển và Chế độ xem MVC có mối quan hệ 1 đến 1 không?

Trả lời

16

Tôi đã được thông báo rằng mỗi Bộ điều khiển phải có một Chế độ xem duy nhất và tất cả các biểu mẫu hoặc hành động khác kết thúc trong nội dung trang sẽ được hiển thị.

Điều đó là vô lý.

Nghiêm túc, điều khiển MVC và Chế độ xem có mối quan hệ 1-1 không?

Tuyệt đối không. Thiết kế ứng dụng của bạn một cách hợp lý và nhất quán.

Bộ điều khiển thường xử lý nhiều tác vụ và trả về nhiều chế độ xem khác nhau. Bạn có thể xem xét có một FAQController để hiển thị tất cả các khung nhìn, cho cả người dùng và quản trị viên.

8

Tôi nghĩ rằng đánh bại mục đích của MVC. Vì bộ điều khiển sẽ có thể quyết định chế độ xem nào sẽ sử dụng để trình bày mô hình.

2

Bộ điều khiển MVC sẽ có thể hỗ trợ nhiều Chế độ xem.

1

Bộ điều khiển MVC có thể và sẽ hỗ trợ nhiều chế độ xem. Thật hữu ích khi có các khung nhìn được hỗ trợ bởi một bộ điều khiển đơn liên quan đến cùng một đối tượng hoặc quy trình nghiệp vụ.

Hãy xem ví dụ bên dưới

public class ExampleController : Controller 
{ 
    public ActionResult Index() 
    { 
      //get list of objects 
      return View(); // uses a view called Index 
    } 

    public ActionResult Edit(string id) 
    { 
      Object target = ObjectManager.GetObject(id); 
      if (target == null) 
      { 
        return New();//view for creating a record 
      } 
      else 
      { 
        ViewData.Add("detail", target); 
        return View("Detail");//using a view not name-mapped to controller method name 
      } 
    } 

    public ActionResult New() 
    { 
      return View(); 
    } 

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