0

这听起来像是一个(非常)愚蠢的问题,但我只是找不到访问我刚刚添加到 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 时刻,让我能够知道在源代码中的何处查找这些问题的答案。

4

2 回答 2

5

一个字段总是在一个部分之下。只是如果你从 admin 中添加字段,会自动为你创建一个与类型同名的部分。

http://orchard.codeplex.com/discussions/396280

您不能将字段添加到内容类型,您始终将其添加到内容部分。只是如果该部分与类型具有相同的名称,就会发生神奇的事情。

http://orchard.codeplex.com/discussions/397426

于 2012-10-13T17:51:08.780 回答
0

不要尝试用你的运气来取代价值观,它会浪费你的时间,你最终几乎没有真正的结果。推荐的方法是使用形状跟踪来执行此操作。在 Internet 上搜索 Orchard Shape Tracing,您就可以开始了。:)

于 2012-10-09T07:31:51.093 回答