我有一个具有分类字段(功能)的contentType(产品)。分类术语(产品特征术语)已定制为包括图像字段和描述字段。
我希望产品详细信息视图显示术语中的图像以及名称,但我找不到要访问它的属性。
我创建了以下内容:
产品
产品功能术语
Fields.Contrib.TaxonomyField-Features.cshtml
<!-- Old Code -->
@if (Model.Terms.Count > 0) {
<p class="taxonomy-field">
<span class="name">@name.CamelFriendly():</span>
@(new HtmlString( string.Join(", ", terms.Select(t => Html.ItemDisplayLink(Html.Encode(t.Name), t.ContentItem ).ToString()).ToArray()) ))
</p>
}
<!-- New Code -->
@if (Model.Terms.Count > 0)
{
<div>
@foreach (var myTerm in Model.Terms)
{
@Display(???)
}
</div>
}
用什么代替问号?我以为它是myTerm.Image,但动态对象上不存在该字段。
我附上了设计师观众的图像。
答案 0 :(得分:4)
如果您想使用模块上的当前开发分支,您可以访问内容项的条款部分,这会引导您查看所有当前应用的条款。
如果您使用的是模块的0.9版,那么您可以通过获取对内容项的引用来动态访问这些字段,然后执行contentItem.PARTNAME.FIELDNAME。对于名为Product的类型和字段名称Feature,它将是contentItem.Product.Feature。然后,如果这个术语有一个名为Image的属性,那么它将是termContentItem.ProductTerm.Image。
我需要更多信息来为您提供确切的语法,例如字段类型,内容类型的确切名称。或者您可以在模块的codeplex项目讨论论坛上发布问题。
答案 1 :(得分:1)
塞巴斯蒂安帮我解决了http://orchardtaxonomies.codeplex.com/discussions/263844
以下是最终工作的内容。
(关键位: contentField = myTerm.ContentItem.Features.TermImage; )
@foreach (var myTerm in Model.Terms)
{
var contentField = myTerm.ContentItem.Features.TermImage;
if (!String.IsNullOrWhiteSpace(contentField.FileName)) {
<p class="image-field">
<img src="@Url.Content(contentField.FileName)" alt="@contentField.AlternateText" width="@contentField.Width" height="@contentField.Height"/>
</p>
}
}