如何访问Orchard中的ContentItemfield文本字段

时间:2012-10-09 03:16:58

标签: orchardcms

这听起来像一个(非常)愚蠢的问题,但我找不到一种方法来访问我刚刚添加到Orchard中的内容类型的文本字段。我知道如何在将字段添加到内容部分时访问该字段,而不是在将字段直接添加到内容类型本身时访问该字段。

内容类型称为Product,它是可包含的并且正在列表中显示。我添加了普通部分和两个自定义字段:名为“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时刻,这将使我能够知道在源代码中查看的位置,以找到这些问题的答案。

2 个答案:

答案 0 :(得分:5)

某个部分下的字段始终。只是如果你从管理员添加字段,将自动为你创建一个与该类型同名的部分。

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

您无法向内容类型添加字段,您始终将其添加到内容部分。只是如果该部分与该类型具有相同的名称,那么就会发生不可思议的事情。

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

答案 1 :(得分:0)

不要试试你的运气取代价值,它会扼杀你的时间,你最终几乎没有真正的结果。建议的方法是使用形状跟踪来执行此操作。在互联网上搜索果园形状追踪,你很高兴。 :)