如何使用glass.mapper获取项目的模板ID?

Tam*_*nar 4 sitecore glass-mapper

有没有办法用玻璃映射器检查Sitecore项目的模板ID?

我的业务逻辑将执行以下操作:

  1. 获取上下文项
  2. 如果上下文项具有特定模板,则可以
  3. 如果它具有不同的模板,则根据一些业务规则查找具有该模板的另一个项目,该业务规则也会检查模板

我想使用SitecoreContext这里描述的类:http://www.glass.lu/Mapper/Sc/Documentation/ISitecoreContext

我的代码看起来像这样:

var context = new SitecoreContext(); 

var currentItem = context.GetCurrentItem<MyModel>();

if(HasCorrectTemplate(currentItem))
{
   return currentItem;
}

return GetFallbackItem();
Run Code Online (Sandbox Code Playgroud)

我真的不想为此自定义Glass Mapper,因为在我看来它应该是检查模板ID的基本功能.

我只能想到使用某种棘手的查询,我没有找到关于其他可能性的文档.

jam*_*kam 7

您还可以将SitecoreInfoType.TemplateId属性添加到模型上的属性,然后Glass将映射到项目的TemplateID.

//Returns the template ID of the item as type System.Guid.
[SitecoreInfo(SitecoreInfoType.TemplateId)]
public virtual Guid TemplateId{ get; set; }
Run Code Online (Sandbox Code Playgroud)

然后,您可以针对您的项目检查模板ID

if(currentItem.TemplateId == {guid-of-template-to-match})
{
   return currentItem;
}
Run Code Online (Sandbox Code Playgroud)

@Maras的解决方案更清晰,但这取决于模板的设置,可能取决于您是否使用TDS代码生成模板.