フィールド値へのアクセス

Version: 10.1
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

このセクションで説明するAPIを使用して、フィールド値の読み取りと書き込みを行うことができます。メディア項目のバイナリ・データの保管に使用される「添付ファイル」システム・フィールド・タイプは除きます。Sitecoreは、すべてのフィールド値をテキストとして保存します。任意のフィールドに単純なテキスト値としてアクセスすることも、Sitecore.Data.Fields名前空間の特殊なクラスを使用することもできます。

一部のフィールド タイプは、単純なテキスト値で構成されます。チェックボックスフィールドには、選択したときに1文字 ("1") が格納されます。リッチテキストエディタ(RTE)フィールドにはXHTMLが含まれています。多数のフィールド タイプには、1つのアイテムのIDまたはパイプ文字 ("|") で区切られた複数のIDが含まれます。その他のフィールド タイプには、XMLまたは独自の形式のデータが含まれます。

先端

任意のフィールドタイプの文字列形式を決定するには、コンテンツエディタで開き、フィールドを含むアイテムを選択してから、未加工のフィールド値を表示します。

任意のフィールドの文字列値にアクセスするには、Sitecore.Data.Items.Itemクラスによって公開されるコレクションを使用します。たとえば、Masterデータベースの /Sitecore/Content/HomeアイテムのTitleフィールドの値にアクセスするには、次のようにします。

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

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

string title = home["title"];
大事な

指定したフィールドが存在しない場合、Sitecore.Data.Items.Itemによって公開されるコレクションは空の文字列を返し、Nullは返しません。

任意のフィールドの値は、Sitecore.Data.Items.Itemクラスによって公開されるコレクションを使用して更新できます。たとえば、Masterデータベースの /Sitecore/Content/Home項目のTitleフィールドの値を更新するには、次のようにします。

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

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

home.Editing.BeginEdit();

home["title"] = "//TODO: replace with appropriate value";

home.Editing.EndEdit();

任意のフィールドをクリアするには、Sitecore.Data.Items.Itemクラスによって公開されるコレクションを使用して、その値を空の文字列に設定します。たとえば、Masterデータベースの /Sitecore/Content/HomeアイテムのTitleフィールドをクリアするには、次のようにします。

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

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

home.Editing.BeginEdit();

home["title"] = String.Empty;

home.Editing.EndEdit(); 
大事な

フィールドの値をクリアしても、そのフィールドは標準値にリセットされません。フィールドを標準値にリセットする手順については、How to Reset a Field to Its Standard Valueの節を参照してください。フィールド値をNullに設定することはできません。

または、Sitecore.Data.Items.Item.Fieldsプロパティを使用して、Sitecore.Data.Fields.Fieldクラスのインスタンスとして任意のフィールドにアクセスすることもできます。たとえば、Master データベースの /Sitecore/Content/HomeアイテムのTitleフィールドにアクセスするには、次のようにします。

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

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

Sitecore.Data.Fields.Field titleField = home.Fields["title"];

if(titleField!=null)

{

string title = titleField.Value;

}
大事な

フィールドを名前 (item.FieldsSystem.String) でアクセスし、アイテムに存在しない場合、Sitecore.Data.Items.Item.FieldsコレクションはNullを返します。

ID (item.FieldsSitecore.Data.ID) でフィールドにアクセスし、アイテムに存在しない場合、Sitecore.Data.Items.Item.Fieldsコレクションはアイテム テンプレートに属さない "新しい" Sitecore.Data.Fields.Fieldオブジェクトを返します。

Sitecore.Data.Fields.Field.Valueプロパティを使用して、フィールドの値を更新できます。たとえば、Masterデータベースの /Sitecore/Content/HomeアイテムのTitleフィールドの値を更新するには、次のようにします。

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

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

Sitecore.Data.Fields.Field titleField = home.Fields["title"];

if(titleField!=null)

{
    home.Editing.BeginEdit();
    titleField.Value = "New Value";
    home.Editing.EndEdit();
}

Sitecoreは必要な場合にのみデータを取得します。Sitecoreがアイテムのすべてのフィールド値を取得するようにするには、Sitecore.Data.Items.Item.ReadAllメソッドを呼び出します。たとえば、コンテキストアイテムのフィールドを反復処理するには、次のようにします。

RequestResponse
Sitecore.Data.Items.Item item = Sitecore.Context.Item;

item.Fields.ReadAll();

foreach (Sitecore.Data.Fields.Field field in item.Fields)
{
    // Process field
}

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、