【发布时间】:2014-09-29 19:18:00
【问题描述】:
我们最近将我们的开发网站从 Sitecore CMS 6.6 更新为 Sitecore CMS 7.2。这样做后,我们无法加载网站上包含图片的任何页面(几乎所有图片!),返回堆栈跟踪错误:
[MissingMethodException: Method not found: 'System.String Sitecore.Data.Fields.ImageField.get_Src()'.]
[TargetInvocationException: Property accessor 'ImgURL' on object 'Siteworx.Domain.Modules.HomeCarousel' threw the following exception:'Method not found: 'System.String Sitecore.Data.Fields.ImageField.get_Src()'.']
目前,我们应该生成图像 URL 的代码(并且在更新之前一直在工作)如下:
public string ImgURL
{
get { return new SCTypes.Image(this, "image").URL; }
}
我在弄清楚这里出了什么问题时遇到了问题,并且到目前为止,我几乎没有运气找到任何关于这个问题的体面的参考资料。如果有人能把我拉向正确的方向,我将永远感激不尽。
更新 - 2014 年 8 月 20 日
好的,
所以我将上面的代码更新为:
public string ImgURL
{
//get { return new SCTypes.Image(this, "image").URL; }
get
{
string src = string.Empty;
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item HomeCarousel = master.GetItem("/sitecore/content/modules/home/carousel items");
Sitecore.Data.Fields.ImageField imageField = HomeCarousel.Fields["imagefield"];
if (imageField != null && imageField.MediaItem != null)
{
Sitecore.Data.Items.MediaItem image = new Sitecore.Data.Items.MediaItem(imageField.MediaItem);
src = Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(image));
// src = Sitecore.Resources.Media.MediaManager.GetMediaUrl(image);
}
return src;
}
页面现在加载,但没有图像。在查看图像应该在哪里的 html 时,我看到:
<img src = "">
这意味着图像的 URL 未在 IF 语句中设置。当我尝试在没有 IF 语句的情况下构建代码并加载页面时,StackTrace 会返回一个空引用错误。
【问题讨论】:
标签: asp.net sitecore .net-4.5 sitecore7.2