gpt4 book ai didi

templates - 如何使用 Glass Mapper 实现 Sitecore 模板继承

转载 作者:行者123 更新时间:2023-12-04 04:37:05 25 4
gpt4 key购买 nike

我一直在尝试使用玻璃映射器实现以下目标,但无法使其正常工作。

我有一个主页模板,它本身没有任何字段,但继承了以下两个模板:
Navigation TemplateFields: Navigation TitleMeta Information TemplateFields: Page Title, Meta Description
我创建了相应的接口(interface)/类,如下所示:

[SitecoreType(TemplateId = "{5BAB563C-12AD-4398-8C4A-BF623F7DBCDC}", AutoMap = true)]
public interface INavigation
{
[SitecoreField(FieldName = "Navigation Title")]
string NavigationTitle { get; set; }
}

[SitecoreType(TemplateId = "{95539498-31A5-4CB5-8DD6-C422D505C482}", AutoMap = true)]
public interface IMetaInformation
{
[SitecoreField]
string PageTitle { get; set; }

[SitecoreField]
string MetaDescription { get; set; }
}

[SitecoreType(TemplateId = "{F08693E5-8660-4B13-BBD6-7B9DC6091750}", AutoMap = true)]
public class HomePage : INavigation, IMetaInformation
{
public virtual string NavigationTitle { get; set; }

public virtual string PageTitle { get; set; }

public virtual string MetaDescription { get; set; }
}

然后当我尝试访问我的页面时,所有属性始终为空:

var context = new SitecoreContext();
var page = context.GetCurrentItem<HomePage>();

我已经尝试了几种不同的方法,但没有任何效果。此外,不同教程中描述的内容也不起作用。唯一有效的是当我直接在主页模板上添加字段时,但我不希望这样,因为我有多个页面类型,因此我想继承这些字段。

有谁知道我在这里缺少什么?!顺便说一句,我正在使用带有 .NET 4.5 的 Sitecore 7,如果这有所作为的话。

最佳答案

您的字段未映射,因为您在 Sitecore 模板的字段名中使用了空格。
删除空格或添加属性 [SitecoreField(FieldName ="Page Title")]到模型。

我认为 Homepage 类正在尝试将 Homepage 模板上的 NavigationTitle 与 fieldName NavigationTitle 映射,并忽略基本模型上的 FieldName 属性。

顺便说一句:我只为我正在处理的当前项目使用接口(interface),它可以按预期使用继承。无需多次添加属性;)

关于templates - 如何使用 Glass Mapper 实现 Sitecore 模板继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568427/

25 4 0