6

次のように、Glass.Mapper を介して Sitecore アイテムを作成します。

var homeItem = sitecoreContext.GetHomeItem<HomeItem>();

// Create the car item
ICar car = sitecoreService.Create(homeItem.BooksFolder, new Car { Tires = 4, Seats=4});

これは機能しますが、Car テンプレートの標準値が適用されない場合、または適用されている場合は、新しい Car プロパティによってすぐに上書きされます。そのため、Car オブジェクトの Color プロパティの値が null の場合、Car テンプレートの標準値の「緑」の値ではなく、この null がフィールドに書き込まれます。

Glass.Mapper を使用してこれを行う賢明な方法を探しましたが、何も見つかりませんでした。Glass.Mapper を通じてこれを行う方法はありますか?

4

2 に答える 2

5

これを行う方法があります。次のような Create メソッドのオーバーライドを使用します。

T Create<T, TK>(TK parent, string newName, Language language = null, bool updateStatistics = true, bool silent = false) where T : class where TK : class;

したがって、コードは次のようになります。

var homeItem = sitecoreContext.GetHomeItem<HomeItem>();

var carName = "Some New Name";

// Create the car item
// I don't know what the type of BooksFolder is so you would put that in the place of Folder.
ICar car = sitecoreService.Create<Car, Folder>(homeItem.BooksFolder, carName);
car.Tires = 4;
car.Seats = 4;

sitecoreService.Save(car);

私たちは同じ問題に直面していましたが、これが私たちがそれを回避した方法です.

于 2015-01-22T17:28:23.213 に答える
1

EditContext にラップされた Sitecore の Reset() メソッドを呼び出すことで、必要なフィールドを標準値にリセットすることができます。

var homeItem = sitecoreContext.GetHomeItem<HomeItem>();

// Create the car item
ICar car = sitecoreService.Create(homeItem.BooksFolder, new Car { Tires = 4, Seats=4});

using(new EditContext())
{
    car.Fields["Color"].Reset();
}

http://firebreaksice.com/how-to-reset-individual-sitecore-fields-to-standard-values/を参照してください。

于 2016-01-07T15:11:53.910 に答える