我尝试在我的网站中使用@RenderSection,它是用Razor脚本构建的。在.cshtml文件中使用它时出现错误。它也没有出现在VS的IntelliSense中。
现在,我刚刚意识到,如果从.cshtml文件中删除@page,错误就会消失,而且IntelliSense还会为我提供@RenderSection.
我的问题是:为什么?
它在微软文档/教程中说,使用新的ASP.NET核心剃刀脚本:
"@page必须是页面上的第一个Razor指令。@ page会影响其他Razor构造的行为。“
所以我有点困惑。包含html的正确方式是什么(局部视图-如主菜单等)在ASP.NET核心中包含新剃刀页面的.cshtml文件中?
谢谢。
发布于 2017-12-10 23:33:17
我已经解决了这个问题,并发现当您在子页面中使用@RenderSection时,它应该位于其父页面的任何部分(即_layout.cshtml)中。
这里你的_layout.cshtml应该是这样的,
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
@RenderSection("MenuContent", false)
@RenderBody()
</body>
</html>你的子页面应该是这样的,
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section MenuContent {
@RenderSection("MenuContent", false)
}而嵌套的子页应该是这样的,
@section MenuContent
{
<!-- content -->
}https://stackoverflow.com/questions/47736189
复制相似问题