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

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

我正在将 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/

相关文章:

Sitecore Glass Mapper 始终为空

asp.net - CheckBoxList不输出标签

Sitecore 清楚地识别用户单击项目保存按钮

linq - 转义空值 LINQ

sitecore - 限制 `Insert Sitecore Link` RTE (Sitecore) 中的位置

sitecore - 在 sitecore 中使用快速查询获取所有子项目和孙项目

asp.net-mvc-5 - Glimpse + MVC5 + Sitecore 7.2

xml - 值不能为空。参数名称:virtualPath-Sitecore

c# - Sitecore Powershell 反序列化 - Core DB

testing - 在没有 DMS 的情况下在 Sitecore 中进行 A/B 拆分测试