0

我有一个小部件的替代视图。在该视图中,我正在使用如下代码抑制包装器:

Model.Metadata.Wrappers.Clear();

这可行,但我只想抑制 Widget.Wrapper。现在它还在抑制 Widget.ControlWrapper ,当我启用了 Widget Control Wrapper 模块时,它会阻止显示编辑按钮。

有没有办法在保留 Widget.ControlWrapper 的同时只清除 Widget.Wrapper?

4

2 回答 2

2

如果有人遇到类似问题,我可以在我的主题中的 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)

我开始使用形状跟踪工具为我在“侧边栏”列中的小部件创建一个替代品(基本上<div id="sidebar">我在我的布局中有一个@Zone(Model.Sidebar))。

我将上面的代码放在我使用 Shape Tracing 创建的 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");

似乎是正确的方法(即,Shape Tracing 仍然显示一个小部件),但它似乎删除了所有其他包装器,因此您必须添加新的包装器以及 Widget.ControlWrapper.cshtml(写为“Widget_ControlWrapper”上面的代码)。

HTH。

于 2013-10-22T22:03:50.020 回答
0

我能够像这样添加回 Widget.ControlWrapper:

Model.Metadata.Wrappers.Add("Widget_ControlWrapper");

这似乎就像我想要的那样工作。

于 2012-11-13T19:59:18.670 回答