Sitecore Glass Mapper类自动生成和设置[SitecoreType()]

时间:2015-09-14 13:57:36

标签: sitecore sitecore7 sitecore7.2 glass-mapper sitecore-mvc

我使用与TDS捆绑在一起的Sitecore 7.2的Glass Mapper V4。 TDS用于自动生成我的所有Glass Mapper模型。我还创建了许多部分类来扩展TDS生成的Glass Mapper类。到目前为止一切都很好。

我在网站上有一个网页表单,我希望利用Glass Mapper缓存。在这里,我们可以看到TDS产生了什么:

    [SitecoreType(TemplateId=ISenior_Surf_Day_Survey_PageConstants.TemplateIdString)] //, Cachable = true
public partial class Senior_Surf_Day_Survey_Page  : GlassBase, ISenior_Surf_Day_Survey_Page 
{

你可以看到//,Cachable = true被代码生成注释掉了。

由于我无法使用所有Glass Mapper类手动编辑我的TDS代码生成文件,因此我尝试将cachable属性添加到我的手动扩展分部类中。

    [SitecoreType(Cachable = true)]
public partial class Senior_Surf_Day_Survey_Page
{

但是,这会产生以下编译错误:
错误CS0579重复' SitecoreType'属性

我的问题是,如何在代码生成模型中添加cachable属性?

1 个答案:

答案 0 :(得分:2)

您可以使用"自定义数据' TDS项目属性选项卡上的字段,用于指定在启用缓存的情况下生成特定类。

自定义数据字段的格式类似于查询字符串,因此您可以添加类似' cacheable = true'它(由一个&符号分隔,如果你有多个键/值对)。

为了使其与代码生成一起使用,您需要在生成期间专门查找该自定义数据密钥,然后应用适当的属性重载[SitecoreType(Cachable = true)]。

如果您正在使用TDS中提供的示例.tt文件,那么您应该已经定义了一个辅助函数,名为' GetCustomProperty'。您可以在item.tt文件中使用此函数来生成相应的SitecoreType属性:

<# if (GetCustomProperty(template.Data, "cacheable") == "true") { #>
    [SitecoreType(Cacheable = true)]
<# } else { #>
    [SitecoreType]
<# } #>