这听起来像是一个(非常)愚蠢的问题,但我只是找不到访问我刚刚添加到 Orchard 中的内容类型的文本字段的方法。我知道在将字段添加到内容部分时如何访问该字段,但在将其直接添加到内容类型本身时不知道。
内容类型称为产品,它是可包含的并且显示在列表中。我添加了普通部分和两个自定义字段:一个名为“Image”的 MediaPicker 字段和一个名为“About”的具有 HTML 风格的 Text 字段。我用来呈现包含它的列表的代码如下:
@using Orchard.DisplayManagement.Shapes;
@{
var list = Model.List;
var items = list.Items;
var count = items.Count;
var listTag = Tag(list, "ul");
listTag.AddCssClass("historia");
var index = 0;
}
<div class="produtos">
@foreach (var item in items)
{
var itemTag = Tag(item, "div");
itemTag.AddCssClass("item-" + index);
@itemTag.StartElement;
<h3>@item.ContentItem.TitlePart.Title</h3>
<img src="@Href(item.Image.Url)"
class="@item.Image.Class"
alt="@item.Image.AlternateText"
width="@item.Image.Width"
height="@item.Image.Height"
style="@item.Image.Style" />
<p>@item.About.Text</p>
@itemTag.EndElement;
++index;
}
</div>
@Display(Model.List)
@Display(Model.Pager)
问题是 @item.Image 不会产生 Image 字段,@item.About 也不会产生“About”文本字段。我什至不知道一个 Text 字段是否有一个 .Text 属性来访问它的值,毕竟它可以有 HTML 风格......我什至不知道在哪里查看源代码来帮助我找出这个已经完成了!
我尝试了一些不同的方法,例如@item.ContentFields.About.Text 或@item.ContentField.About.Text、@item.Fields[0]、@item.ContentItem.About.Text、@item.ContentItem.ContentFields。 About.Text (最后两个抛出一个异常,告诉我 ContentItem 没有这些字段......)
我知道如果我将字段添加到内容部分并将此部分添加到内容类型,我可以这样做:@item.ContentItem.TheNameOfTheContentPart.Image.Url ...
我越来越沮丧,因为我不知道如何在 Orchard 做最简单的事情。我需要那个 Eureka 时刻,让我能够知道在源代码中的何处查找这些问题的答案。