В 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 в среде Model Glue? Я знаю, что могу установить простые переменные в представлении:
<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)>
Но мне было интересно, есть ли лучший способ сделать это.
Edit:
В ответ на ответ Адама Кэмерона 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
и Page1SidebarContent.cfm
, Page2.cfm
и Page2SidebarContent.cfm
и т. Д. *