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.
该标记来自小部件包装器。可以通过调用 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)
| 归档时间: |
|
| 查看次数: |
3878 次 |
| 最近记录: |