2

次のようなサイトコア コントロールがあります。<sc:Image ID="imgLogo" runat="server" Field="Image"/>

現在のアイテムには Image フィールドがありません。このように、CurrentItem のドロップツリーを介してアイテムを取得しています ( GetFieldValueは GetField と同じです。Sitecoreの基本クラスをオーバーライドしています)。

 string countryGuid = CurrentItem.GetFieldValue("Country", null); 
 Item country = sitecoreDatabase.GetItem(countryGuid);
 BindCountryLogo();

これでItem、国のロゴの画像ができました。sc:Image に表示したいのはすべてです。

これまでのところ、私はこれを得ました:

 private void BindCountryLogo(Item country)
    {
        Fields.ImageField logoField = country.Fields["Image"];
        if (logoField != null && logoField.MediaItem != null)
        {
            //Sitecore.Data.Items.MediaItem image = new MediaItem(logoField.MediaItem);
            //string src = Sitecore.Resources.Media.MediaManager.GetMediaUrl(image);
            //imgLogo.DataSource = src;
            //imgLogo.ImageUrl = logoField.MediaItem.Source.;
            //string src = Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(logoField));
            //Sitecore.Data.Items.MediaItem img = new MediaItem(ImageField.Medi)
        }
     }

それらのどれも機能していません。

4

1 に答える 1

7

コントロールには、imageField を保持するアイテムに設定できるプロパティ「Item」があります。

BindCountryLogo は次のようになります。

private void BindCountryLogo(Item country)
{
    imgLogo.Item = country;    
}

(または、BindCountryLogo() メソッドを削除し、メイン メソッドでアイテムを設定します;))

于 2012-11-28T23:41:42.567 に答える