2012-09-27 2 views
1

Я не могу найти способ сделать @section и @RenderSection() работать с несколькими макетами уровней. В моем проекте я определить иерархию макетов:ASP.NET MVC 3, разделы и несколько уровней макета

~/Views/Shared/_Layout.cshtml:

<!DOCTYPE html> 
<html> 
<head> 
    <meta ... /> 
    <meta ... /> 

    <link href="..." rel="stylesheet" type="text/css" /> 
    <link href="..." rel="stylesheet" type="text/css" /> 

    @RenderSection("Stylesheet", false) 
</head> 
<body> 
    <!-- lots of markup --> 
    @RenderBody() 

    <!-- more markup --> 

    <script src="..." type="text/javascript" /> 
    <script src="..." type="text/javascript" /> 

    @RenderSection("JavaScript", false) 
</body> 
</html> 

~/Просмотров/Shared/_BaseLayout.cshtml (нет определения разделов JavaScript или STYLESHEET):

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<!-- lots of markup --> 
@RenderBody() 

~/Views/Shared/_CreateEditLayout.cshtml (опять-таки, нет определений JavaScript или стилей):

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<!-- lots of markup --> 
@RenderBody() 

~ Просмотров/Профиль/Edit.cshtml:

@model ... 

@{ 
    Layout = "~/Views/Shared/_CreateEditLayout.cshtml"; 
} 

@section JavaScript { 
    <script type="text/javascript"> 
     jQuery(document).ready(function ($) { 
      // lots of funny JS 
     }); 
    </script> 
} 

Моя проблема заключается в том, что достаточно просто определить @section JavaScript { } (не нужно писать разметку или JavaScript внутри раздела) для моей Edit.cshtml остановки было вынесено , Ошибка следующая: Определены следующие разделы, но не были отображены для страницы макета «~/Views/Shared/_CreateEditLayout.cshtml»: «JavaScript».

Любые идеи, что происходит не так? Заранее спасибо.

ответ

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