我有一个列表,它有三个字段:Title,PublishingRollupImage和Description。
我想将图片上传到库 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();
}
我做错了什么?
答案 0 :(得分: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的原因。