Asp.net @嵌套razor模板中的渲染

Asp.net @嵌套razor模板中的渲染,asp.net,asp.net-mvc,asp.net-mvc-3,razor,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,我的问题是,当基本模板中定义了@RenderSection时,我似乎无法从嵌套模板中使用@RenderSection。目前,我有一个嵌套的基本模板,它链接到一个子模板,然后在视图页面中使用。当我在基本模板中定义@RenderSection并在视图页面中呈现它时,它会抛出一个错误 这就是确切的问题 我想创建一个RenderSection以允许插入自定义脚本。 我的基本模板 <!DOCTYPE html> <html> <head> <title>@V

我的问题是,当基本模板中定义了
@RenderSection
时,我似乎无法从嵌套模板中使用
@RenderSection
。目前,我有一个嵌套的基本模板,它链接到一个子模板,然后在视图页面中使用。当我在基本模板中定义
@RenderSection
并在视图页面中呈现它时,它会抛出一个错误

这就是确切的问题

我想创建一个RenderSection以允许插入自定义脚本。 我的基本模板

<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
 @RenderSection("HeaderContent", false) // The region of the header scripts (custom css)

</head>
<body>
@RenderBody()
</body>
</html>
我的新基础模板

<head>
  <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/layout.css")" />
  <link rel="stylesheet" type="text/css" href="@Url.Content("~/content/global.css")" />
  <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
  <script type="text/javascript" src="@Url.Content("~/js/fadeInFadeOut.js")"></script>
  <title>@ViewBag.Title</title>
  @RenderSection("HeaderContent", false)
</head>
<body>
  @RenderBody()
</body>
我的看法

@{
  ViewBag.Title = "Home";
  Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
  <h1>Left Content</h1>
}
<div>my view content</div>
@{
ViewBag.Title=“主页”;
Layout=“~/Views/Shared/OneColLayer.cshtml”;
}
@章节标题内容{
左内容
}
我的视图内容
内容放在oneCol模板中,现在是基本模板

结果

<div id="Content">
   <h1>Left Content</h1>
</div>

左内容

< /代码> 您需要指定在中间模板中允许通过的部分。

BaseTemplate.cshtml

<!DOCTYPE html>
<html>
  <head>
    <title>@ViewBag.Title</title>
    @RenderSection("HeaderContent", false) @* The region of the header scripts (custom css) *@
  </head>
<body>
  @RenderBody()
</body>
</html>
如果将“渲染”部分放置在基础模板中某个部分的内部,它将在基础模板上的正确位置渲染该部分


View.cshtml->使用MiddleLayout.cshtml作为其布局

@section HeaderContent
{
    <!-- header content that will now render -->
}

<!-- page content -->
@章节标题内容
{
}

我尝试过这种方法。但是,在我看来,它的内容显示在它继承的不是基础模板的模板上。@ JamesAndrewSmith每编辑一次,它就显示在中间模板上,因为您没有将“<代码> @ RealStices < /代码>放在您呈现的部分的中间模板中。我会编辑我的,让你知道你的应该是什么样子。我希望有更好的方法来冒泡部分声明。除了@sectionscript{@RenderSection(“script”)}之外,还有一个问题:如何将RenderSection html字符串获取到cshtml页面@{string sampleHeading;}@if(IsSectionDefined(“sampleHeading”){sampleHeading=RenderSection(“sampleHeading”).ToString();@Html.Display(“sampleHeading”);这非常有效。谢谢!不过应该自动传递它。
<div id="Content">
   <h1>Left Content</h1>
</div>
<!DOCTYPE html>
<html>
  <head>
    <title>@ViewBag.Title</title>
    @RenderSection("HeaderContent", false) @* The region of the header scripts (custom css) *@
  </head>
<body>
  @RenderBody()
</body>
</html>
@{
  Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@section HeaderContent {
  @RenderSection("HeaderContent", false)
}
@RenderBody()
@section HeaderContent
{
    <!-- header content that will now render -->
}

<!-- page content -->