在 ASP.NET MVC 3 中,您可以拥有@section
一个视图内:
@section SideBar {
<p>Some content</p>
<p>Some more content</p>
}
<p>Body content</p>
然后在主视图中,您将使用它来呈现它:
<div id="sidebar">
@RenderSection("SideBar", false)
</div>
@RenderBody()
在 Model Glue 框架中与此等效的 ColdFusion 是什么?我知道我可以在视图中设置简单的变量:
<cfset event.setValue("section", "Tables")>
然后在主模板中使用它们,如下所示:
<cfif event.exists("section")><h3>#event.getValue("section")#</h3></cfif>
但这仅适用于单行和简单的字符串。我想做的是包含整个 HTML 块。实现这一目标的最佳方法是什么?我认为这在理论上可行:
<cfsavecontent variable="sidebar">
<p>Some content</p>
<p>Some more content</p>
</cfsavecontent>
<cfset event.setValue("sidebar", sidebar)>
但我想知道是否有更好的方法。
编辑:
作为对 Adam Cameron 的回答,据我所知,Model Glue 仅支持将单独的文件合并到一个模板中的功能:
SideBar.cfm:
<p>Some content</p>
<p>Some more content</p>
Page.cfm:
<p>Body content</p>
ModelGlue.xml:
<event-handler name="page.text">
<views>
<include name="sidebar" template="SideBar.cfm"/>
<include name="body" template="Page.cfm"/>
<include name="main" template="main.cfm"/>
</views>
</event-handler>
main.cfm:
<cfoutput>#viewCollection.getView("sidebar")#</cfoutput>
<cfoutput>#viewCollection.getView("body")#</cfoutput>
我需要能够在page.cfm
视图中声明侧边栏内容。这里的想法是在主模板的某个地方会有一个 div,它允许一个小的 HTML 片段,比如一个带有文本描述和链接的图像,任何视图都可以填充。Page1.cfm
有类似and Page1SidebarContent.cfm
, Page2.cfm
andPage2SidebarContent.cfm
等的东西是没有意义的......