---
title: "画像フィールドへのアクセス"
slug: "access-image-fields"
abstract: "Sitecoreを使って画像フィールドにアクセスする方法。Data.Fields.ImageFieldクラス。"
---
# 画像フィールドへのアクセス

Sitecore.Data.Fields.ImageFieldクラスを使ってImage型のデータテンプレートフィールドにアクセスできます。Sitecore.Data.Fields.ImageField.MediaItemプロパティを使って、フィールドで選択されたメディアアイテムをSitecore.Data.Items.Itemとしてアクセスできます。フィールドに画像が指定されていなければ、Sitecore.Data.Fields.ImageField.MediaItemプロパティはNullです。

Sitecore.Resources.ImageBuilderクラスを使ってHTML <img>要素を作成できます。Sitecore.Resources.Media.MediaManager.GetMediaUrlメソッドを使ってメディアアイテムのURLを判定できます。例えば、*Master*データベースの*/Sitecore/Content/Home*アイテムにあるImageフィールドの値ImageFieldに基づいてHTML 要素を構築する場合:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.ImageField imageField = home.Fields"imagefield";

if (imageField!=null && imageField.MediaItem!=null)
{
 Sitecore.Data.Items.MediaItem image = new Sitecore.Data.Items.MediaItem(imageField.MediaItem);

 string src = Sitecore.StringUtil.EnsurePrefix('/',

 Sitecore.Resources.Media.MediaManager.GetMediaUrl(image));

 string imgTag = String.Format(@"<img src=""{0}"" alt=""{1}"" />", src, image.Alt);
}

> !重要ビジネスユーザーが提供した画像やその他のメディアにはSitecoreメディアライブラリをご利用ください。開発者が管理する画像にはファイルシステムとソースコード管理システムをご利用ください。

画像フィールドの内容を消去するにはSitecore.Data.Fields.ImageField.Clearメソッドを使うことができます。例えば、*Master*データベースの*/Sitecore/Content/Home*項目の画像フィールドをImageFieldフィールドに消去するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.ImageField imageField = home.Fields"imagefield";

home.Editing.BeginEdit();

imageField.Clear();

home.Editing.EndEdit();

Sitecore.Data.Fields.ImageFieldクラスを使ってイメージフィールドを更新できます。例えば、マスターデータベースの*/Sitecore/Content/Home*アイテムにある画像フィールドImageFieldを*/Sitecore/Media Library/Images/Sample*画像に更新するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Items.Item sampleItem =

master.GetItem("/sitecore/media library/images/sample");

Sitecore.Data.Items.MediaItem sampleMedia =

new Sitecore.Data.Items.MediaItem(sampleItem);

Sitecore.Data.Fields.ImageField imageField = home.Fields"imagefield";

if (imageField.MediaID != sampleMedia.ID) {

 home.Editing.BeginEdit();
 imageField.Clear();
 imageField.MediaID = sampleMedia.ID;

 if (!String.IsNullOrEmpty(sampleMedia.Alt))
 {
 imageField.Alt = sampleMedia.Alt;
 }
 else
 {
 imageField.Alt = sampleMedia.DisplayName;
 }

 home.Editing.EndEdit();
}