我的问题是,当基础模板中定义了@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>

然后,我跳过子模板,因为我不想在其中放入任何自定义头代码,并将其应用于页面本身.

@section HeaderContent {
    <script>alert("hi");</script>
}

我的问题是,我似乎无法将自定义标题代码从正常页面添加到基本模板中.

以下部分已定义,但尚未呈现在布局页面~/Views/Shared/OneColLayer.cshtml": "HeaderContent中.

我是否需要在视图页面中包含指向基本模板的指针?

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

我的新基础模板

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

我的新子模板

@{
  Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@RenderSection("HeaderContent", false)
@RenderBody()

我的观点

@{
  ViewBag.Title = "Home";
  Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
  <h1>Left Content</h1>
}
<div>我的观点 content</div>

内容放在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>

EDIT

您的新子模板

@{
  Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@section HeaderContent {
  @RenderSection("HeaderContent", false)
}
@RenderBody()

如果将"渲染"部分放在基础模板的部分中,它将在基础模板的正确位置渲染该部分.


View.cshtml -> uses MiddleLayout.cshtml as it's layout

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

<!-- page content -->

Asp.net相关问答推荐

InvalidOperationException:在程序集上找不到UserSecretsIdAttribute

在正则表达式中允许 -(破折号)

AppendHeader 是否与 AddHeader 完全相同?

使用会话变量有多安全 - asp.net / c#

如何从 RouteData 获取路由名称?

在上下文中找不到 owin.Environment 项

ASP.NET Core 中的授权. [Authorize] 属性总是 401 Unauthorized

从 JavaScript 读取 web.config

如何获取 ActionLink 的工具提示?

带有完整内存错误的 WCF 服务(内存门判断失败,因为可用内存) - 如何解决

ASP.NET 会话超时测试

SimpleMembership 与 ASP.NET MVC 4 中的自定义数据库架构

发布网站项目时临时路径太长

回发后 Document.Ready() 不起作用

如何在 asp.net 中更改 DataBinder.Eval 的日期格式?

如何防止aspxerrorpath作为查询字符串传递给 ASP.NET 自定义错误页面

为什么混合 Razor Pages 和 VueJs 是一件坏事?

Windows Azure PaaS(网络角色)的真正替代品?

如何告诉 RadioButtonList 不生成表格

ASP.NET 自定义控件 - 未知的服务器标记