这听起来像一个(非常)愚蠢的问题,但我找不到一种方法来访问我刚刚添加到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时刻,这将使我能够知道在源代码中查看的位置,以找到这些问题的答案。
答案 0 :(得分:5)
某个部分下的字段始终。只是如果你从管理员添加字段,将自动为你创建一个与该类型同名的部分。
http://orchard.codeplex.com/discussions/396280
您无法向内容类型添加字段,您始终将其添加到内容部分。只是如果该部分与该类型具有相同的名称,那么就会发生不可思议的事情。
答案 1 :(得分:0)
不要试试你的运气取代价值,它会扼杀你的时间,你最终几乎没有真正的结果。建议的方法是使用形状跟踪来执行此操作。在互联网上搜索果园形状追踪,你很高兴。 :)