今天,我收到错误“对象必须实现IConvertible”。当我尝试将相关媒体项添加到动态内容时,我有Ajax将图像上传到Sitefinity管理员。这是代码。
var doctorType = TypeResolutionService.ResolveType(ConstUtil.DoctorType);
var liveItem = dynamicModuleManager.GetDataItem(doctorType, Authentication.Id);
dynamicModuleManager.Provider.SuppressSecurityChecks = true;
var masterItem = dynamicModuleManager.Lifecycle.GetMaster(liveItem) as DynamicContent;
var cultureName = CurrentCulture;
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
var draftItem = dynamicModuleManager.Lifecycle.CheckOut(masterItem) as DynamicContent;
if (draftItem == null)
{
return new HttpResponseMessage
{
Content = new JsonContent(new { Result = false })
};
}
var newImage = UploadImage(model);
if (newImage != null)
{
//var contentLink = new ContentLink(newImage.Parent.Id, newImage.Id);
//draftItem.SetValue("photo" , NewImage);
}
//现在我们需要办理登机手续,因此适用更改
var checkInDoctorItem = dynamicModuleManager.Lifecycle.CheckIn(draftItem);
dynamicModuleManager.Lifecycle.Publish(checkInDoctorItem);
dynamicModuleManager.SaveChanges();
我尝试通过两种方式解决此错误
1) draftItem.AddImage("photo", newImage); It still get same Error
2) draftItem.CreateRelation(newImage, CustomFieldName.DoctorProfilePhoto);
它没有出错,但无法将新图像保存到目标。
所以我使用Sitefinity 7.0,请帮我解决。
答案 0 :(得分:0)
我遇到了类似的问题。执行步骤:
1 - 将图像上传到库中。本文有几个有效示例,可帮助您正确上传图片:http://www.sitefinity.com/developer-network/forums/general-discussions-/add-images-to-the-library-programatically
2 - 像上面一样调用draftItem.CreateRelation(image,fieldName)方法
3 - 发布
dynamicModuleManager.Lifecycle.Publish(checkInDoctorItem);
draftItem.SetWorkflowStatus(dynamicModuleManager.Provider.ApplicationName, "Published");
dynamicModuleManager.SaveChanges();