我有一个小部件的替代视图。在该视图中,我使用以下代码禁止包装器:
Model.Metadata.Wrappers.Clear();
这有效,但我只想禁止 Widget.Wrapper。现在它还抑制了Widget.ControlWrapper,当我启用了Widget Control Wrapper模块时,它会阻止编辑按钮显示。
有没有办法在保留Widget.ControlWrapper的同时只清除Widget.Wrapper?
如果有人遇到类似的问题,我能够在我的主题中的 Widget-Sidebar.cshtml 文件中抑制 Widget.Wrapper:
@using Orchard.DisplayManagement.Descriptors;
@using Orchard.Environment.Extensions;
@{
Model.Metadata.Wrappers.Remove("Widget_Wrapper");
Model.Metadata.Wrappers.Add("Widget_SideBarWrapper");
Model.Metadata.Wrappers.Add("Widget_ControlWrapper");
}
@Display(Model.Content)
我首先使用形状描摹工具为我在"侧边栏"列中的小部件创建一个替代品(基本上是我在布局中@Zone(Model.Sidebar)
的<div id="sidebar">
)。
我将上面的代码放在我使用形状跟踪创建的 Widget-Sidebar.cshtml 替代项中。
Model.Metadata.Wrappers.Clear(); as used by the OP completely removes everything, to the point where in Shape Tracing it won't even show up as a widget. Adding my own alternate (Widget.SideBarWrapper.cshtml, which is added as "Widget_SideBarWrapper" above) would not fix this. I felt that was wrong even though the content displayed.
Model.Metadata.Wrappers.Remove("Widget_Wrapper");
似乎是正确的方法(即,形状跟踪仍然显示一个小部件),但它似乎删除了所有其他包装器,因此您必须添加新包装器以及Widget.ControlWrapper.cshtml(在上面的代码中写为"Widget_ControlWrapper")。
呵呵。
我能够像这样添加回Widget.ControlWrapper:
Model.Metadata.Wrappers.Add("Widget_ControlWrapper");
这似乎就像我想要的那样工作。