在ASP.NET MVC 3,你可以有一個視圖中的@section
:什麼是ColdFusion Model Glue相當於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()
,會是什麼在模型膠框架中的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)>
但我想知道是否有更好的方式來做到這一點。
編輯:
針對亞當·卡梅隆的回答,型號膠水,從我所知道的,只支持單獨的文件合併成一個模板的能力:
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
和Page1SidebarContent.cfm
,Page2.cfm
和Page2SidebarContent.cfm
,等...
謝謝克里斯,你的回答幫了很多。 –