我使用与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属性?
答案 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]
<# } #>