渲染部分的这段代码是什么意思
本文关键字:代码 是什么 意思 段代码 染部 | 更新日期: 2023-09-27 18:35:28
我是MVC3 Asp.Net 初学者。任何人都可以解释一下这段代码的含义:
@section head
{
@RenderSection("head", false)
}
关于斯科特古的文章:
http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx
有一个 RenderSection 的例子,但它定义了@section然后在某处使用了@RenderSection。在这种情况下,部分标题被定义,并且在其中本身正在呈现相同的头部,这使我感到困惑。
RenderSection 有什么作用,我如何找到这里渲染的内容?
斯科特一度写道
"RenderSection()"帮助程序方法的第一个参数指定 我们要在该位置呈现的部分的名称 布局模板。 第二个参数是可选的,它允许我们 定义我们渲染的部分是否是必需的。 如果 部分是"必需的",那么 Razor 将在运行时抛出错误,如果 该部分未在基于 在布局文件上(这样可以更轻松地跟踪内容) 错误)。
因此,RenderSection 所做的是渲染模板/视图中定义的部分(而不是一般_Layout)。在"在我们的视图模板中实现"侧边栏"部分"下,他解释了如何实现一个部分。
总而言之,您拥有的是一个名为"head"的部分,它在更向下/嵌套的视图中呈现一个名为"head"的部分。
编辑:看看 http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx,看看我对嵌套视图的意思 - 但请注意,这篇文章现在已经有一年多了。
主布局:
@RenderSection("head", false)
子布局:
@{
Layout = "~/Views/_MasterLayout.cshtml";
}
@section head
{
@RenderSection("head")
}
内容:
@{
Layout = "~/Views/_SubLayout.cshtml";
}
@section head
{
<title>Content-Layout</title>
}
在视图中定义该部分,并在 _Layout.cshtml 中呈现它。
在您的布局(母版)页面中放置以下内容:
@RenderSection("head", false)
在您的视图页面中放置以下内容:
@section head {
PUT VIEW SPECIFIC CODE HERE
}
这里的"head"是您可以在视图页面中定义的部分名称。
它有点像我们在 asp.net 网络表单中使用的ContentPlaceHolder。
通过在_Layout文件中使用@rendersection,您可以控制主.cshtml代码中各部分的布局和顺序(假设它称为index.cshtml)
例如,如果您在_Layout文件的末尾有一个@RenderSection("scripts",false),那么即使"scripts"部分放在index.cshtml文件的顶部,它也会在底部呈现。 从而确保在整个应用程序中以一致的方式加载所有脚本部分。
如果将来您出于某种原因决定将所有脚本移动到 head 部分,您只需移动_Layout文件中的一行代码即可轻松完成此操作。