2011-09-23 60 views
0

我有以下佈局頁嵌套/繼承佈局頁不能正常工作

_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> 

在此設置中,wh帶我去詳細我得到的錯誤:*以下路段已確定,但尚未呈現的頁面佈局「〜/查看/共享/ _StyledPageLayout.cshtml」:「頭」 *

什麼我做錯了嗎?

回答

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

我必須複製這些部分嗎?我希望_StyledPageLayout能夠接受StyledPage中的任何內容,然後細節就會將這2個結合到它想要添加到頭部的任何內容中。我不想在各種視圖中引用jquery.ui,但也許視圖不支持繼承 – Jon

2

基本相同,接受的答案,但如果你不需要的默認渲染會有點整潔......

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

...其中'假'表示該部分不是必需的。