我正在将 Glass Mapper V4 与 Sitecore 7.2 结合使用,该版本与 TDS 绑定(bind)在一起。 TDS 用于自动生成我的所有 Glass Mapper 模型。我还创建了许多部分类来扩展 TDS 生成的 Glass Mapper 类。到目前为止一切顺利。
我的网站上有一个 Web 表单,我想利用 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 代码生成的文件,因此我尝试将可缓存属性添加到我的手动扩展部分类中。
[SitecoreType(Cachable = true)]
public partial class Senior_Surf_Day_Survey_Page
{
但是,这会产生以下编译错误:
错误 CS0579 重复的“SitecoreType”属性
我的问题是,如何使用代码生成的模型添加可缓存属性?
最佳答案
您可以使用 TDS 项的属性选项卡上的“自定义数据”字段来指定在启用缓存的情况下生成特定类。
自定义数据字段的格式类似于查询字符串,因此您可以向其中添加类似“cacheable=true”的内容(如果您有多个键/值对,则用“&”号分隔)。
为了使其能够与代码生成一起使用,您需要在生成过程中专门查找该自定义数据键,然后应用适当的属性重载 [SitecoreType(Cachable = true)]。
如果您使用 TDS 提供的示例 .tt 文件,那么您应该已经定义了一个名为“GetCustomProperty”的辅助函数。您可以在 item.tt 文件中像这样使用此函数来生成适当的 SitecoreType 属性:
<# if (GetCustomProperty(template.Data, "cacheable") == "true") { #>
[SitecoreType(Cacheable = true)]
<# } else { #>
[SitecoreType]
<# } #>
关于Sitecore Glass Mapper 类自动生成和设置 [SitecoreType()],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566701/