カスタム ニュース リスト MVC テンプレートに表示する RelatedImageというニュース ウィジェットにカスタム フィールドを追加しました。
注:カスタム フィールドは、「複数の画像をアップロードまたは選択できる」という制限が設定された関連メディア (画像、ビデオ、ファイル) フィールドです。
次のようにカスタム フィールドをループすることで、画像の URL を取得できます。
@foreach (var relatedItem in item.Fields.RelatedImage)
{
<li>@relatedItem.Fields.MediaUrl</li>
}
上記のコードは機能し、URL をレンダリングします。
次のようなコードは、正しい値を出力します。
@item.Fields.RelatedImage.Length
ただし、制限を「アップロードまたは選択できる画像は 1 つだけ」に設定すると、変更に使用されるモデルが@item.Fields.RelatedImage
変更されるため、これらのプロパティが存在しないため、上記のコードは例外をスローします。
必要なのは、リスト内のニュース項目ごとに 1 つの画像のみをレンダリングすることですが、「画像を 1 つだけ...」制限モードに切り替えると、モデルがどのように見えるか、またはどのように取得するかを理解できません。そのプロパティのホールド。したがって、次のコードは機能しません。
@item.RelatedItem("RelatedImage").Fields.MediaUrl
したがって、今の私にとっての質問はイライラするものです:テンプレート/ビューに渡されたモデルをどのように知ることができますか? さまざまなオプションを出力しようとしましGetType().ToString()
たが、繰り返し取得するのは ItemViewModel だけで、役に立ちません!
編集 - 次のコードは実際に機能します。
<img src="@Html.Raw(item.Fields.RelatedImage.Fields.MediaUrl)" />
しかし、これを理解するのはイライラするほど困難でした。Type RelatedImage が何であるかをどのように把握しますか。プロパティ Fields は動的なタイプであり、物事をより複雑にします。