2011-09-23 1 views
0

je ne travaille pas les pages de mise en page suivantesNested/Héritant pages mise en page

_StyledLayout.cshtml:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 


    <title>@ViewBag.Title</title> 

    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

    @RenderSection("Head", false) 
</head> 
<body> 
    @RenderBody() 
</body> 
</html> 

_StyledPageLayout.cshtml:

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

@section Head 
{ 
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script> 

} 

@RenderBody() 

Details.cshtml:

@using System.Data; 

@model ASPNETMVC3.Models.ConfigModel 
@{ 
    ViewBag.Title = "Details"; 
    Layout = "~/Views/Shared/_StyledPageLayout.cshtml"; 
} 

@section Head 
{ 
<script type="text/javascript"> 

     var oTable; 

     $(document).ready(function() { 

      $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' }); 

     }); 

    </script> 
} 

<h2> 
    Details</h2> 

Dans cette configuration wh en je vais Détails je reçois l'erreur: * Les sections suivantes ont été définies mais n'ont pas été rendus pour la page de mise en page « ~/Vues/Shared/_StyledPageLayout.cshtml »:. « Tête » *

Qu'est-ce que est-ce que je fais mal?

Répondre

2

_StyledPageLayout.cshtml:

@section Head 
{ 
    @if (IsSectionDefined("Head")) 
    { 
     // If the view contains a Head section use that instead 
     @RenderSection("Head") 
    } 
    else 
    { 
     // The view doesn't have a Head section => use some default output 
     <script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script> 
    } 
} 
+0

Je dois donc dupliquer les sections? J'espérais que _StyledPageLayout prendrait tout ce qui est dans StyledPage et les détails auraient alors ces 2 combinés avec tout ce qu'il veut ajouter à la section head. Je ne veux pas mettre une référence à jquery.ui par exemple dans plusieurs vues, mais peut-être que les vues ne supportent pas l'héritage – Jon

2

essentiellement la même que la réponse acceptée, mais un peu plus propre si vous ne souhaitez pas un rendu par défaut serait ...

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

... où le 'false' indique que la section n'est pas requise.