如何在Orchard中设置Widget的样式?

b3n*_*b3n 9 asp.net asp.net-mvc orchardcms razor asp.net-mvc-3

我正在尝试在Orchard中构建一个主题(转换我现有的模板)但是在设置Blog Archives小部件时遇到了问题.我有一个区域"侧边栏",我放置了小部件.

为了让它输出标记我希望我在我的视图文件夹中创建了一个新模板:Widget-BlogArchives.cshtml所有模板都将div中的内容包装在div中,如下所示:

<div class="box box_small">
    @Display(Model.Content)
</div>
Run Code Online (Sandbox Code Playgroud)

所以我希望所有的widget内容都在我的div中.但是,生成的HTML如下所示:

<article class="widget-blog-archives widget" shape-id="15">
  <header shape-id="15">
    <h1 shape-id="15">The Archives</h1>
  </header>
  <div class="box box_small" shape-id="15">
    <div class="archives" shape-id="16">
      <ul class="archiveMonthList" shape-id="16">
        <li class="first last" shape-id="16">
      <a href="(shortened)/10" shape-id="16">October 2011 (1)</a>
    </li>
  </ul>
    </div>
  </div>
</article>
Run Code Online (Sandbox Code Playgroud)

我不明白的是整篇文章包装的来源?如何将标题放入我的div中并将其更改为?

有人还可以解释模型中存储标题"The Archives"的位置吗?我在形状跟踪工具中查看了模型,但找不到它......

谢谢.

UPDATE

正如Bertrand解释我对Widget-BlogArchives.cshtml做了一些更改:

@using Orchard.ContentManagement
@using Orchard.Widgets.Models
@{
  Model.Metadata.Wrappers.Clear();
  var title = ((IContent)Model.ContentItem).As<WidgetPart>().Title;
}
<div class="box box_small">
  <h3>@title</h3>
  @Display(Model.Content)
</div>
Run Code Online (Sandbox Code Playgroud)

这现在生成我想要的HTML.

Ber*_*Roy 4

该标记来自小部件包装器。可以通过调用 Model.Metadata.Wrappers.Clear() 来抑制包装器。然后,您可以完全接管您自己的小部件覆盖的渲染。

如果您打开 widget.wrapper.cshtml,您将找到第二个问题的答案:

var title = ((IContent)Model.ContentItem).As<WidgetPart>().Title;
Run Code Online (Sandbox Code Playgroud)

也可以这样完成:

 var title = Model.ContentItem.WidgetPart.Title
Run Code Online (Sandbox Code Playgroud)