我尝试在使用Razor脚本构建的网站中使用@RenderSection。使用.cshtml文件时出错。它也没有出现在VS的IntelliSense中。
现在,我刚刚意识到如果我从.cshtml文件中删除了@page,那么错误消失了,而且IntelliSense也为我提供了@RenderSection
我的问题是:为什么?
它在Microsoft文档/教程中说明了使用新的ASP.NET Core Razor脚本:
" @page必须是页面上的第一个Razor指令。 @page会影响其他Razor结构的行为。"
所以我有点困惑。使用ASP.NET Core中的新Razor页面在.cshtml文件中包含html(部分视图 - 如主菜单等)的正确方法是什么?
感谢。
答案 0 :(得分:1)
我已经解决了这个问题,并且在子页面中使用@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 -->
}