asp.net - 如何在 Orchard 中设置小部件的样式?

标签 asp.net asp.net-mvc asp.net-mvc-3 razor orchardcms

我正在尝试在 Orchard 中构建一个主题(转换我拥有的现有模板),但在为博客文件小部件设置样式时遇到了问题。我有一个区域“侧边栏”,我在其中放置了小部件。

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

<div class="box box_small">
    @Display(Model.Content)
</div>

所以我希望所有的小部件内容都在我的 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>

我不明白整篇文章的包装来自哪里?如何将标题放入我的 div 并将其更改为 a ?

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

谢谢。

更新

正如 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>

这现在生成了我想要的 HTML。

最佳答案

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

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

var title = ((IContent)Model.ContentItem).As<WidgetPart>().Title;

也可以这样做:
 var title = Model.ContentItem.WidgetPart.Title

关于asp.net - 如何在 Orchard 中设置小部件的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870349/

相关文章:

c# - 使用模型值包括报价 ASP MVC4

c# - 在 View 中显示字典值

asp.net-mvc-3 - 如何在Url.Content中包含MVC Razor变量?

c# - 如何将站点范围的无缓存 header 添加到 MVC 3 应用程序

asp.net - 防止双击asp.net按钮

javascript - 如何在内容页中使用 javascript,asp.net

javascript - 如何在离线模式下加载 impress.js 的 strut 幻灯片编辑器

c# - WordPress WooCommerce ASP.net API WebHookHandler : The WebHook request must contain an entity body formatted as HTML Form Data

javascript - JSON 到 JavaScript,语法错误 : Unexpected token &

asp.net-mvc - ASP.NET MVC 3 Beta 1阻止对Razor View 的访问