繁体   English   中英

这个渲染代码是什么意思?

[英]What does this code of rendersection mean?

我是Asp.Net MVC3的初学者。 任何人都可以解释一下这段代码的含义:

@section head
{
    @RenderSection("head", false)
}

关于ScottGu的文章:

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)。 在我们的视图模板中“实现”SideBar“部分下面的一点点下来”他解释了如何实现一个部分。

总而言之,你所拥有的是一个名为“head”的部分,它在视图中进一步向下/嵌套呈现一个名为“head”的部分。

编辑:看看http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx看看我对嵌套视图的意思 -但请注意,这篇文章现已超过一年了。

MasterLayout:

@RenderSection("head", false)

SubLayout:

@{
    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 webforms中使用的ContentPlaceHolder。

通过在_Layout文件中使用@rendersection,您可以控制主.cshtml代码中的部分的布局和顺序(假设它叫做index.cshtml)

例如,如果在_Layout文件的末尾有@RenderSection(“scripts”,false),那么即使“scripts”部分放在index.cshtml文件的顶部,它也会在底部呈现。 从而确保在整个应用程序中以一致的方式加载所有脚本部分。

如果您将来由于某种原因决定将所有脚本移动到head部分,那么只需在_Layout文件中移动一行代码即可轻松完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM