2012-11-10 17 views
18

Tôi đang bắt đầu học MVC4. Tôi đã xem xét hai khả năng tạo ra một View dựa trên một mẫu Razor hoặc một Master Page.Bố cục MVC VS Trang chủ MVC

Tôi muốn hiểu sự khác biệt thực tế giữa hai.

Hiện tại, tôi có thể thấy rằng nếu tôi tạo Chế độ xem bằng Trang chính, tôi có thể ghi đè một số phần. Ví dụ: nếu Master của tôi định nghĩa trình giữ chỗ "cột bên trái" và trình giữ chỗ "cơ thể", tôi không thể chỉ định nội dung cho Chế độ xem cụ thể, nhưng tôi cũng có thể hiển thị nội dung trong phần "cột bên trái" được gắn với ngữ cảnh trong đó trang (từ hộp tìm kiếm đến trình xem báo giá chứng khoán). Ngoài ra, các trang chính không thể được xác định bằng cách sử dụng các mẫu Razor, vốn ít tiết hơn so với cú pháp khác (một phần sai: someone được quản lý để tấn công khía cạnh này).

Với Razor Layouts, tôi chỉ có thể xác định một khối liền kề của trang có thể bị ghi đè bởi Chế độ xem cụ thể và tôi nên sử dụng nhiều bố cục (ngắt DRY) cho những thay đổi nhỏ ở các phần khác của trang. Tuyên bố trước của tôi có đúng là hoặc tôi thiếu gì đó không?

Rõ ràng là tôi có thể làm cho nội dung trong bất kỳ phần nào của trang bằng cách sử dụng tốt của jQuery, nhưng đó là một vấn đề

+1

Trong Bố cục Dao cạo, bạn có thể xác định nhiều phần '.Bạn nên đọc bài viết này về cách [bố cục và phần] (http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor .aspx) làm việc trong Razor. – nemesv

Trả lời

26

Bạn có thể sử dụng phần với Razor. Scott Gu viết blog về họ ở đây: http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

Trong Layout của bạn, bạn có thể định nghĩa như nhiều bộ phận như bạn muốn:

<div id="leftMenu"> 
    @RenderSection("LeftMenu", required: false) 
</div> 

mà bạn có thể ghi đè lên trong quan điểm của bạn:

@section LeftMenu { 
    <div>... here comes the left menu for this view ...</div> 
} 

Bạn cũng có thể kiểm tra xem một phần có được xác định trong chế độ xem hay không và không cung cấp một số nội dung mặc định:

@if (IsSectionDefined("LeftMenu")) { 
    @RenderSection("LeftMenu") 
} 
else { 
    <div>Some default left menu</div> 
} 
11

Bắt đầu với MVC3, công cụ xem dao cạo đã được giới thiệu. Ở mức độ cao, một công cụ xem về cơ bản là những gì có quan điểm và hiển thị HTML cần thiết. Dao cạo sử dụng tệp _layout và hệ thống tạo khuôn mẫu riêng của nó tương tự như các trang chính. Tuy nhiên, MVC3 và 4 có một công cụ xem khác được gọi là công cụ xem WebForms và công cụ đó sử dụng các trang chính. Nếu bạn tìm kiếm các hướng dẫn MVC1 và MVC2 cũ, bạn sẽ thấy các trang chính vì trước khi MVC3 chỉ có công cụ xem WebForms.

Hiện tại về chức năng, cả hai đều giống nhau. Trang chính cho phép bạn xác định người giữ chỗ nội dung, trong khi dao cạo cho phép bạn xác định các phần. Sự khác biệt lớn nhất là cách trang được hiển thị. Trang chính hiển thị trang bên ngoài, nghĩa là trang cái đầu tiên, sau đó là phần giữ chỗ nội dung. Razor là tôi tin đệ quy và bắt đầu với phần bên trong nhất và làm việc theo cách của nó trở lại.

Kiểm tra bài viết trên blog này để biết thêm thông tin về bố trí dao cạo http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

Về cái nào được ưa chuộng, cả hai động cơ xem có tồn tại, nhưng nếu bạn muốn ulitize các sytax dao cạo (mà tôi đánh giá cao đề nghị) thì bạn phải sử dụng hệ thống bố trí. Dao cạo không cho phép bạn sử dụng trang chính.

+2

Cảm ơn bạn đã trả lời chi tiết. – RayLoveless