これは(非常に)ばかげた質問のように聞こえますが、オーチャードのコンテンツタイプに追加したばかりのテキストフィールドにアクセスする方法が見つかりません。コンテンツパーツに追加されたときにフィールドにアクセスする方法は知っていますが、コンテンツタイプ自体に直接追加されたときはわかりません。
コンテンツタイプはProductと呼ばれ、包含可能であり、リストに表示されています。通常の部分に加えて、「Image」という名前のMediaPickerフィールドと「About」という名前のHTMLフレーバーのTextフィールドの2つのカスタムフィールドを追加しました。それを含むリストをレンダリングするために使用しているコードは次のとおりです。
@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プロパティがあるかどうかさえわかりませんが、結局のところ、HTMLフレーバーを持つことができます...これがどのように行われるかを知るのに役立つソースコードの場所さえわかりません終わらせる!
@ item.ContentFields.About.Textや@item.ContentField.About.Text、@ item.Fields [0]、@ item.ContentItem.About.Text、@item.ContentItem.ContentFieldsなどのさまざまなアプローチを試しました。 About.Text(最後の2つは、ContentItemにこれらのフィールドがないことを通知する例外をスローします...)
コンテンツ部分にフィールドを追加し、この部分をコンテンツタイプに追加した場合、これを行うことができたはずです:@ item.ContentItem.TheNameOfTheContentPart.Image.Url .. ..
オーチャードで最も簡単なことをする方法がわからないので、私はますますイライラしています。この種の質問に対する答えを見つけるためにソースコードのどこを見ればよいかを知ることができる、そのエウレカの瞬間が必要です。