当我使用Glass.Mapper在我的Sitecore网站上以页面编辑器模式打开页面时,我有时会收到错误。
您无法保存不包含该属性的类 表示商品ID。确保至少有一处房产 标记为包含Sitecore ID。类型: Castle.Proxies.IBasicPageProxy 在Glass.Mapper.Sc.Configuration.SitecoreTypeConfiguration.ResolveItem(Object 目标,数据库数据库) 在Glass.Mapper.Sc.GlassHtml.MakeEditable [T](Expression'1字段,Expression'1 standardOutput,T模型,对象参数, Context context,Database database,TextWriter writer)
这出现在渲染的位置,因此它不会显示为标准的ASP错误。
重新启动IIS解决了这个问题,但很快就会再次出现..
我使用接口进行模型定义,每个接口都继承自IBaseType:
[SitecoreType]
public interface IBaseType
{
[SitecoreId]
Guid Id { get; set; }
[SitecoreInfo(SitecoreInfoType.Name)]
string Name { get; set; }
[SitecoreItem]
Item InnerItem { get; set; }
[SitecoreInfo(SitecoreInfoType.Url)]
string Url { get; set; }
[SitecoreInfo(SitecoreInfoType.TemplateId)]
Guid TemplateId { get; set; }
[SitecoreInfo(SitecoreInfoType.FullPath)]
string FullPath { get; set; }
}
我使用Sitecore 7.5 rev。 141003(.NET 4.5,MVC5),以及最新版本的Glass.Mapper相关的NuGet包目前:
问题出现在我们尝试的所有计算机上,但它们都使用Windows 8,IIS 8.5.9600。我尝试恢复到WebActivator方法,但它没有帮助。模型定义位于单独的类库项目中,该项目引用所有玻璃映射器程序集。
我很无能,在其他项目之前从未遇到过这个错误。有没有人知道是什么原因导致的,或者我如何调试它?
感谢您的帮助!
答案 0 :(得分:1)
我已将下面的代码放在我的模型中并且它可以正常工作
[SitecoreId]
public virtual Guid Id { get; set; }
答案 1 :(得分:-2)
Glass mapper要求Item由ID表示。如果玻璃模型没有GUID属性,您将看到此错误。
您可以通过添加属性公共虚拟GUID ID {get;设置;} 到您的玻璃模型