2011-09-23 63 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) 
} 

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