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

try 在 .net 中使用 MS Graph 添加新的应用程序角色时出现 ODataError

C# - 将 xyz 平铺转换为纬度/经度,反之亦然,给出不同的结果

无法加载文件或程序集.无效指针(HRESULT 异常:0x80004003 (E_POINTER))

将 Global.asax 迁移到 Startup.cs

在 appSettings 中存储字符串数组?

更改 GridView 中列的标题文本

解析器错误消息:文件/TestSite/Default.aspx.cs不存在

即使使用正确的 Accepts 标头,WebAPI 也不会返回 XML

Directory.Exists 不适用于网络路径

HttpContext.Cache 过期

无法从 App_code 文件夹中找到类型或命名空间

Windows 运行 ASP.NET 的 IIS 替代方案

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

对于每个请求,RestClient 应该是单例还是新的

无法序列化会话状态

由于文件路径太长,网站发布失败

Asp.Net Mvc - 如何在共享视图中有一个控制器

Request.Cookies 和 Response.Cookies 之间的区别

ASP.NET 5、EF 7 和 SQLite - SQLite 错误 1:没有这样的表:博客

在 Asp.Net MVC 5 中获取登录用户的用户 ID