2012-05-26 38 views
27

Tôi là người mới bắt đầu trong Asp.Net MVC3. Ai có thể vui lòng giải thích những gì có nghĩa là mã này:Mã hiển thị này có ý nghĩa gì?

@section head 
{ 
    @RenderSection("head", false) 
} 

Mở bài viết của ScottGu:

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

có một ví dụ về RenderSection nhưng nó định nghĩa @section và sau đó ở đâu đó @RenderSection được sử dụng. Trong trường hợp phần đầu này được định nghĩa và bên trong chính nó, cùng một đầu đang được trả lại làm tôi bối rối.

RenderSection làm gì và làm cách nào để tìm thấy những gì đang được hiển thị ở đây?

Trả lời

34

Scott đã viết tại một thời điểm

Tham số đầu tiên đến “RenderSection()” phương pháp helper định tên của bộ phận chúng tôi muốn làm ở vị trí đó trong mẫu bố trí. Tham số thứ hai là tùy chọn và cho phép chúng tôi xác định xem phần chúng tôi đang hiển thị có được yêu cầu hay không. Nếu phần là “bắt buộc”, thì Razor sẽ phát ra lỗi khi chạy phần đó không được triển khai trong mẫu xem dựa trên trên tệp bố cục (có thể dễ dàng theo dõi nội dung lỗi ).

Vì vậy, RenderSection làm gì, hiển thị phần được xác định trong mẫu/chế độ xem (không phải là _Layout chung). Tiếp tục một chút trong "Triển khai phần" SideBar "trong Mẫu xem của chúng tôi", anh ấy giải thích cách triển khai một phần.

Vì vậy, tất cả trong tất cả, những gì bạn có là một phần được gọi là "đầu" làm cho một phần được gọi là "đầu" trong một chế độ xem tiếp tục xuống/lồng nhau.

Chỉnh sửa: hãy xem http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx để xem ý tôi là gì với chế độ xem lồng nhau - nhưng lưu ý rằng bài viết này đã cũ hơn một năm rồi.

MasterLayout:

@RenderSection("head", false) 

SubLayout:

@{ 
    Layout = "~/Views/_MasterLayout.cshtml"; 
} 
@section head 
{ 
    RenderSection("head") 
} 

Nội dung:

@{ 
    Layout = "~/Views/_SubLayout.cshtml"; 
} 
@section head 
{ 
    <title>Content-Layout</title> 
} 
13

Bạn xác định phần trong chế độ xem và hiển thị phần đó trong _Layout.cshtml.

Trong bố cục của bạn (master) nơi trang này:

@RenderSection("head", false) 

Ở vị trí lần xem trang của bạn này:

@section head { 

PUT VIEW SPECIFIC CODE HERE 
} 

Here "đầu" là tên của phần mà bạn có thể định nghĩa trong bạn xem trang.

Phần mềm giống như ContentPlaceHolder mà chúng tôi sử dụng trong biểu mẫu web asp.net.

+1

Tôi hiểu rằng nhưng đoạn code tôi gửi xác định '@section' đầu và bên trong niềng răng một lần nữa kêu gọi RenderSection. Không nên xác định đầu '@section' trong các trang con? –

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