2012-06-12 1 views
0

У меня есть список, который имеет три поля: Title, PublishingRollupImage и Описание.PublishingRolloutImage не сохраняется на Update();

Я хочу загрузить изображение в библиотеку 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(); 
     } 

Что я делаю неправильно?

ответ

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.