2013-03-01 6 views
1

Я опытный веб-разработчик, который занимается разработкой проектов вместо разработки в течение года, поэтому я пытаюсь вернуться в него и изучить Razor. До сих пор это был мрачный провал.Razor RenderSection не работает

Я создал новый веб-сайт пустой Razor в VS2012, и созданы следующие файлы:

_MainLayout.cshtml:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Razor Test</title> 
    </head> 
    <body> 
     <div>@RenderBody()</div> 
     <div>@RenderSection("testSection")</div> 
    </body> 
</html> 

ContentPage1.cshtml:

@{ 
    Layout = "_MainLayout.cshtml"; 
} 

<div>This is the content on the Razor Test Page.</div> 

и TestSection. cshtml:

@{ 
    Layout = "_MainLayout.cshtml"; 
} 

@section TestSection { 
    <h1>this is test section</h1> 
} 

Когда я пытаюсь запустить эту страницу, я получаю следующее сообщение об ошибке:

Section not defined: "TestSection".

И идея, что происходит? Это должно было быть так же смешно просто, как я мог это понять. Видимо, это тоже простой.

ответ

1

Sections должен идти внутри вашей страницы не в отдельном cshtml

ContentPage1.cshtml:

@{ 
    Layout = "_MainLayout.cshtml"; 
} 
@section testSection { 
    <h1>this is test section</h1> 
} 

<div>This is the content on the Razor Test Page.</div> 

Или, если вы хотите отдельным cshtml для «секции, как» использование дисплея частичного вид вместо.

+0

спасибо. Ни один из примеров, которые я видел, не сделал этого очень ясным (или я рассматривал частичные примеры и не понимал различия). – Klay

+0

Кажется, что имя раздела и значения RenderSection чувствительны к регистру. – Aaron