0

Title、PublishingRollupImage、Descriptionの3つのフィールドを持つリストがあります。

画像をライブラリSiteCollectionImagesにアップロードし、リストで参照したいと思います。

ファイルをSiteCollectionImagesフォルダーにアップロードして、そのURLを取得できます。

リスト「MyList」にアイテムを挿入することもできますが、Update()メソッドの後でPublishingRolloutImageが保持されません。私はすでに次のようにImageFieldValueのコンストラクターを設定しようとしました:

        new ImageFieldValue("<img src='test.jpg' />");

しかし、それは機能しませんでした。

これが私のコードです:

        using (var site = new SPSite(SPContext.Current.Site.ID))
        using (var web = site.OpenWeb())
        {
            var folder = web.GetFolder("SiteCollectionImages");
            var file = folder.Files.Add(fileName, file, true);
            folder.Update();

            var list = web.Lists["MyList"];
            var item = list.Items.Add();
            item["Title"] = "MyItemTitle";
            item["PublishingRollupImage"] = new ImageFieldValue { ImageUrl = file.Url };
            item["Description"] = "MyDescription";
            item.Update();
        }

私が間違っているのは何ですか?

4

1 に答える 1

1

多くの試行錯誤の末、私は2つの間違ったことをしていることに気づきました。

これ:

item["PublishingRollupImage"] = new ImageFieldValue { ImageUrl = file.Url };

このようになっているはずだった:

var image = item["PublishingRollupImage"] as ImageFieldValue ?? new ImageFieldValue();
image.ImageUrl = String.Format("/{0}", file.Url);
item["PublishingRollupImage"] = image;

そしてfile.Urlはスラッシュで始める必要があります。スラッシュで始まらない場合は、Update()の後で壊れます。方法。それがString.Formatがそこにある理由です。

于 2012-06-13T15:51:42.827 に答える