如何从剃须刀视图呈现小部件
How to render widget from razor view
由于我的主题结构(可能是因为我对 Orchard 还很陌生),我需要从剃刀视图中呈现一个小部件。该小部件包含一个二级菜单,我需要将其放在 Layout.cshtml;类似这样的东西,但带有小部件(或菜单)而不是 Model.Navigation.
<div id="MenuH">
@if (Model.Navigation != null)
{@Display(Model.Navigation)}
</div>
这可能吗?
编辑
我需要在 Layout.cshtml "master page" 的这一部分显示二级菜单(或小部件):
<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>
menu/widget应该去主题的地方(我买了主题)插入js脚本。
您似乎正在尝试将小部件添加到尚不存在的新区域。要实现这一点,您需要做几件事:
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 现在 'ColumnLeft' 区域在您的管理员 UI 中可用。将管理员 ui 中的小部件添加到 ColumnLeft 区域
由于我的主题结构(可能是因为我对 Orchard 还很陌生),我需要从剃刀视图中呈现一个小部件。该小部件包含一个二级菜单,我需要将其放在 Layout.cshtml;类似这样的东西,但带有小部件(或菜单)而不是 Model.Navigation.
<div id="MenuH">
@if (Model.Navigation != null)
{@Display(Model.Navigation)}
</div>
这可能吗?
编辑
我需要在 Layout.cshtml "master page" 的这一部分显示二级菜单(或小部件):
<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>
menu/widget应该去主题的地方(我买了主题)插入js脚本。
您似乎正在尝试将小部件添加到尚不存在的新区域。要实现这一点,您需要做几件事:
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 现在 'ColumnLeft' 区域在您的管理员 UI 中可用。将管理员 ui 中的小部件添加到 ColumnLeft 区域