【问题标题】:Using List<Classname> in Macros in Kentico E-mail Template在 Kentico 电子邮件模板的宏中使用 List<Classname>
【发布时间】:2019-06-03 08:05:55
【问题描述】:

我有一个名为 Notifications 的类对象列表

 public class Notifications
    { 
        public string Name { get; set; }  
    }

有一个函数只返回通知列表。我想构建一个电子邮件模板,在 Kentico 中使用宏显示所有通知信息,不幸的是,当我使用宏方法时,例如

{%

foreach (var Data in Notification) {
 Data.Name
} 

#%} 

尽管我确保所有数据都已成功发送到电子邮件,但这样的宏根本不返回输出,我想使用 foreach 循环。

【问题讨论】:

  • 您确定宏中的 Notification 变量包含您需要的数据吗?您是否将该变量传递给 MacroResolver?
  • 是的,我正在调试它并在将结果传递给 MacroResolver 之前查看结果

标签: c# macros kentico email-templates


【解决方案1】:

我想通了,我们要继承

AbstractDataContainer<ClassName>

并注册我们正在使用的字段

public class Notifications: AbstractDataContainer<Notifications>
    {   [RegisterColumn]
        public string Name { get; set; }  
    }

因此我们可以在 foreach 循环中使用 List

【讨论】:

    【解决方案2】:

    如果您在电子邮件模板的宏解析器 (SetNamedSourceData) 中正确注册了通知列表,您应该能够使用这种代码和平迭代它(仅用于测试目的的 h1):

    {% foreach (Data in Notification) { %}
     <h1> {% Data.Name %}</h1>
    {% } %} 
    

    【讨论】:

    • 不幸的是它返回了一个空标签
    • 您是否尝试将模型转换为 DataSet?看起来它不能与自定义对象一起使用。有关更多信息,请参阅此线程:devnet.kentico.com/questions/macro-not-resolving-in-email
    • 我无法将要发送到电子邮件模板的所有内容转换为数据集
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多