Asp.net mvc 3 Durandal在合成主要内容后不合成页脚视图

Asp.net mvc 3 Durandal在合成主要内容后不合成页脚视图,asp.net-mvc-3,asp.net-mvc-4,knockout.js,durandal,Asp.net Mvc 3,Asp.net Mvc 4,Knockout.js,Durandal,我有一个durandal shell视图,如下所示: <div id="global"> <!-- ko compose: {view: 'nav'} --> <!-- /ko--> <div id="main" class="container"> <!--ko compose: {model: router.activeItem, afterCompose: router.afterCompose,

我有一个durandal shell视图,如下所示:

<div id="global">
<!-- ko compose: {view: 'nav'} -->
<!-- /ko-->
<div id="main" class="container">
    <!--ko compose: {model: router.activeItem, 
        afterCompose: router.afterCompose,
        transition: 'entrance'} -->
    <!-- /ko-->
</div>
<div id="push"></div>
 </div>
  <!-- ko compose: {view: 'footer'} -->
  <!-- /ko-->

“导航”和“页脚”是单独的html视图。当我运行该网站时,它运行良好,只是从未显示页脚html。然而,当我这样说时,页脚被显示出来(尽管页面布局当然是错误的):



当我将页脚的html代码直接粘贴到shell中时,它当然也可以工作。

Durandal视图应该有一个根元素

视图只有一个根元素。杜兰达尔需要这个。如果 注释位于根目录下,它们将被删除。在这种情况下 如果找到多个根元素,它们将被包装在 部门

compose footer指令是
global
之外的注释,因此将被删除。将其移动到“全局”中应该可以做到这一点

<div id="global">
<!-- ko compose: {view: 'nav'} -->
<!-- /ko-->
<div id="main" class="container">
    <!--ko compose: {model: router.activeItem, 
        afterCompose: router.afterCompose,
        transition: 'entrance'} -->
    <!-- /ko-->
</div>
<div id="push"></div>
<!-- ko compose: {view: 'footer'} -->
  <!-- /ko--> 
</div>

作为替代方案,您可以将所有内容包装到另一个div元素中,以实现不带注释的单个根元素

<div>
<div id="global">
<!-- ko compose: {view: 'nav'} -->
<!-- /ko-->
<div id="main" class="container">
    <!--ko compose: {model: router.activeItem, 
        afterCompose: router.afterCompose,
        transition: 'entrance'} -->
    <!-- /ko-->
</div>
<div id="push"></div>
 </div>
  <!-- ko compose: {view: 'footer'} -->
  <!-- /ko-->
</div>


RTFM我想:)谢谢,我选择了第二个option@fhoetzing-别担心。:)在像DurandalSo这样的新框架中,这样的内容很容易被忽略,因此看起来您正在将添加到
shell.html
。。。是否可以将其添加到包含
shell.html
的文件中?例如:
。我问这个问题的原因是因为我认为我可以使用
compose
作为include anywhere(就像ng include for Angular一样)。
<div>
<div id="global">
<!-- ko compose: {view: 'nav'} -->
<!-- /ko-->
<div id="main" class="container">
    <!--ko compose: {model: router.activeItem, 
        afterCompose: router.afterCompose,
        transition: 'entrance'} -->
    <!-- /ko-->
</div>
<div id="push"></div>
 </div>
  <!-- ko compose: {view: 'footer'} -->
  <!-- /ko-->
</div>