5

当我使用 Glass.Mapper 在我的 Sitecore 网站上以页面编辑器模式打开页面时,有时会收到错误消息。

您无法保存不包含表示项目 ID 的属性的类。确保至少一个属性已被标记为包含 Sitecore ID。类型:Glass.Mapper.Sc.Configuration.SitecoreTypeConfiguration.ResolveItem(对象目标,数据库数据库)处 Glass.Mapper.Sc.GlassHtml.MakeEditable[T] 处的 Castle.Proxies.IBasicPageProxy(表达式'1 字段,表达式'1 标准输出, T 模型、对象参数、上下文上下文、数据库数据库、TextWriter 编写器)

这出现在渲染的位置,因此它不会显示为标准的 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 包:

  • 温莎城堡 3.3.0
  • 城堡核心 3.3.3
  • Glass.Mapper 3.0.14.26
  • Glass.Mapper.Sc 3.2.3.46
  • Glass.Mapper.Sc.CastleWindsor 3.3.0.24
  • Glass.Mapper.Sc.Mvc-5 3.3.0.43

该问题出现在我们尝试过的所有机器上,但它们都使用 Windows 8、IIS 8.5.9600。我尝试恢复到 WebActivator 方法,但没有帮助。模型定义在一个单独的类库项目中,它引用了所有玻璃映射器程序集。

我很无知,在其他项目之前从未遇到过这个错误。有谁知道什么会导致这种情况,或者我如何调试它?

谢谢您的帮助!

4

2 回答 2

1

我在我的模型中放入了以下代码并且它可以工作

[SitecoreId]
public virtual Guid Id { get; set; }
于 2015-04-30T13:03:18.247 回答
-2

Glass mapper 要求 Item 由 ID 表示。如果玻璃模型没有 GUID 属性,您将看到此错误。

您可以通过添加属性public virtual GUID Id {get; 设置;}到你的玻璃模型

于 2017-01-25T16:31:49.817 回答