加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – @RenderSection在嵌套剃刀模板

发布时间:2020-12-15 19:10:28 所属栏目:asp.Net 来源:网络整理
导读:我的问题是我不能使用@RenderSection从嵌套模板当@RenderSection在基本模板中定义。目前,我有一个嵌套基本模板,它链接到一个子模板,然后在视图页面中使用。当我在基本模板中定义@RenderSection并在视图页面中渲染它时会抛出一个错误。 这是确切的问题。
我的问题是我不能使用@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>my view 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>

编辑

您的新子模板

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

如果将render部分放在基本模板的某个部分内部,它将在基本模板上将该部分呈现在正确的位置。

View.cshtml – >使用MiddleLayout.cshtml作为它的布局

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

<!-- page content -->

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读