0

我有一个列表,其中包含三个字段:标题、PublishingRollupImage 和描述。

我想将图像上传到库SiteCollectionImages并在列表中引用它。

我可以将文件上传到 SiteCollectionImages 文件夹,并获取它的 url。

我也可以在列表“MyList”中插入项目,但 PublishingRolloutImage 在 Update() 方法之后不会持续存在。我已经尝试为 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

经过大量的试验和错误,我发现我做错了两件事:

这个:

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 回答