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

Tim*_*Tom 35 c# asp.net asp.net-mvc asp.net-mvc-3

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

@section head
{
    @RenderSection("head", false)
}
Run Code Online (Sandbox Code Playgroud)

关于ScottGu的文章:

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

有一个RenderSection的例子,但是它定义了@section,然后使用@RenderSection.在这种情况下,部分头部被定义,并且在其自身内部呈现相同的头部,这使我感到困惑.

RenderSection做了什么以及如何找到这里呈现的内容?

Bru*_*ner 46

斯科特一度写道

"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)
Run Code Online (Sandbox Code Playgroud)

SubLayout:

@{
    Layout = "~/Views/_MasterLayout.cshtml";
}
@section head
{
    @RenderSection("head")
}
Run Code Online (Sandbox Code Playgroud)

内容:

@{
    Layout = "~/Views/_SubLayout.cshtml";
}
@section head
{
    <title>Content-Layout</title>
}
Run Code Online (Sandbox Code Playgroud)


Kap*_*wal 19

您在视图中定义该部分并在_Layout.cshtml中呈现它.

在您的布局(主)页面中放置:

 @RenderSection("head", false)
Run Code Online (Sandbox Code Playgroud)

在您的视图页面中放置:

@section head {

PUT VIEW SPECIFIC CODE HERE
}
Run Code Online (Sandbox Code Playgroud)

这里"head"是您可以在视图页面中定义的部分的名称.

它有点像我们在asp.net webforms中使用的ContentPlaceHolder.