2012-05-26 3 views
27

Я новичок в Asp.Net MVC3. Может кто-нибудь объяснить, что подразумевается под этим кодом:Что означает этот код изредка?

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

В статье ScottGu в:

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

есть пример RenderSection, но он определяет @section, а затем используется где-то @RenderSection. В этом случае заголовок главы определяется и внутри него сама та же голова отображается, что меня смущает.

Что делает RenderSection и как я могу найти то, что здесь отображается?

ответ

34

Скотт написал в одной точке

Первый параметр в «RenderSection()» вспомогательный метод определяет название раздела, мы хотим, чтобы сделать в этом месте в шаблоне макета. Второй параметр является необязательным и позволяет нам определить, требуется ли раздел, который мы представляем, или нет. Если раздел « » является «обязательным», тогда Razor будет вызывать ошибку во время выполнения, если этот раздел не реализован в шаблоне представления, который основан на файле в файле макета (что облегчает отслеживание содержимого ошибок).

Итак, что делает RenderSection, представляет собой раздел, определенный в шаблоне/представлении (а не в общем _Layout). Немного дальше в разделе «Реализация раздела« SideBar »в нашем шаблоне просмотра» он объясняет, как реализовать раздел.

Итак, у вас есть раздел под названием «голова», который отображает раздел «голова» в представлении, который далее опущен/вложен.

Редактировать: посмотреть на http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx, чтобы увидеть, что я имею в виду с вложенными видами, но обратите внимание, что эта статья старше года.

MasterLayout:

@RenderSection("head", false) 

SubLayout:

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

Содержание:

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

Вы определяете раздел в представлении и визуализируете его в _Layout.cshtml.

в макете (мастер) страница место это:

@RenderSection("head", false) 

На ваш взгляд страницы место это:

@section head { 

PUT VIEW SPECIFIC CODE HERE 
} 

Здесь «голова» это название раздела, который вы можете определить в вашем Просмотр страницы.

Его несколько напоминает ContentPlaceHolder, который мы используем в веб-формах asp.net.

+1

Я понимаю, что, но код, который я отправил определяет '@section' голову и внутри скобки снова вызывает RenderSection. Должна ли определяться голова «@section» на дочерних страницах? –

Смежные вопросы