如何从剃刀视图中渲染小部件

时间:2017-12-12 21:01:29

标签: razor widget orchardcms

由于我的主题结构(可能是因为我对Orchard很新),我需要从剃刀视图中渲染一个小部件。小部件包含一个二级菜单,我需要将它放在Layout.cshtml中;像这样的东西,但有一个小部件(或菜单),而不是Model.Navigation。

<div id="MenuH">
    @if (Model.Navigation != null) 
        {@Display(Model.Navigation)}
</div>

这可能吗?

修改

我需要在Layout.cshtml“母版页”的这一部分显示二级菜单(或小部件):

<section class="main-content-zone">
<div class="container">
    <div class="row row-offcanvas">
        <<div class="col-lg-sp-2 col-md-3 col-sm-4" id="bt-sidebar">
            <div id="MenuV">
                <script type="text/javascript">$("#MenuV").html($("#MenuH nav").parent().html());</script>
            </div>
        </div>
        <div class="col-lg-sp-10 col-md-9 col-sm-8 col-xs-12" id="bt-content" role="main">
            <div class="col-xs-12" id="bt-content" role="main">
                <div class="card no-margin-top show-overflow">
                    <div class="row">

                        @if (Model.Content != null){<div class="col-md-12" runat="server" id="Content">@Display(Model.Content)</div>}
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

菜单/小部件应该去主题(我买了一个主题)插入js脚本。

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试将小部件添加到尚不存在的新区域。要实现这一目标,您需要做一些事情:

1在Layout.cshtml中找到要渲染小部件的位置。在那里定义一个新的区域名称:

<div class="col-lg-sp-2 col-md-3 col-sm-4" id="bt-sidebar">
    <div class="column-left-zone">
        @Zone(Model.ColumnLeft)
    </div>
</div>

注意:这假设您的Layout.cshtml具有定义的函数like this。如果没有,您可以@Display(Model.ColumnLeft)

2在Theme.txt中定义区域,以便您可以通过管理UI向其添加小部件:

Zones: Header, Navigation, ..., ColumnLeft

3现在&#39; ColumnLeft&#39;您可以在管理界面中使用区域。将admin ui中的小部件添加到ColumnLeft区域