Asp.net mvc 跨嵌套布局的默认内容

Asp.net mvc 跨嵌套布局的默认内容,asp.net-mvc,asp.net-mvc-3,layout,razor,Asp.net Mvc,Asp.net Mvc 3,Layout,Razor,我有一个基本布局,BaseLayout.cshtml: <html> <body> @RenderBody() <div id="footer"> @if (!IsSectionDefined("Footer")) { Default footer markup } else { @RenderSection("Footer") }

我有一个基本布局,BaseLayout.cshtml:

<html>
<body>
    @RenderBody()
    <div id="footer">
        @if (!IsSectionDefined("Footer")) {
            Default footer markup
        }
        else {
            @RenderSection("Footer")
        }
    </div>
</body>
</html>

@RenderBody()
@如果(!IsSectionDefined(“页脚”)){
默认页脚标记
}
否则{
@渲染部分(“页脚”)
}
我使用sidebar.cshtml从中派生嵌套布局:

@{ Layout = "BaseLayout.cshtml"; }

<div>
    <div>
        @RenderBody()
    </div>
    <div>Sidebar</div>
</div>
@{Layout=“BaseLayout.cshtml”}
@RenderBody()
边栏
需要对WithSidebar布局进行哪些更改:

  • 是否要在视图中覆盖BaseLayout中的页脚部分
  • 是否不覆盖默认页脚并使用BaseLayout中定义的页脚
  • 我正在开发ASP.NETMVC3RC2。我读过Marcin Dobosz的这篇文章:但我不知道它在嵌套布局中是否能正常工作。

    要覆盖一个部分:

    @section Footer {
        <div>Put your overriden content here</div>
    }
    
    @节页脚{
    将覆盖的内容放在这里
    }
    
    我最初的技术需要一些额外的功能。我已经写了一篇解决这个问题的文章:

    我将进一步澄清我的问题。这个问题在我很抱歉的时候被重复了。我刚在这个页面上添加了一个URL。主持人一定把问题抄了过来。谢谢你详细的博文Marcin:)和解释。。。我想知道我们是否可以通过在Razor引擎中隐式地(在解析过程中)添加“this”需求来避免这个需求?我还将继续使用现有的帮助程序(Html、Url等),在边缘情况下需要一些启发式方法。但是会导致更简洁的语法:@RedefineSection(…)而不是:@this.RedefineSection(…)还有:需要传入“私有静态只读对象”_o=new object();”吗函数委托的实例?这可以避免吗?我不认为我们会像你建议的那样含蓄地添加
    这个。
    。我们必须检测您是否已经有了类似于
    @this.DoSomething()
    的表达式,并跳过这种情况。似乎太麻烦了,没有那么多收获。理想情况下,我们只需将这些方法添加到
    WebPageBase
    类本身,以便它们始终可用。关于
    \u o=new object()
    ,这是因为razor内联模板实际上是
    Func
    ,所以需要传入一些内容。我可以传入
    null
    ,但由于工作方式的原因,内联模板可以访问
    item
    lambda参数,因此可能有人试图对其进行处理,他们会得到一个NullRefException。如果你不碰
    项目
    ,那就没关系了。