Scriban模板引擎多循环支持

我正在尝试使用Scriban模板引擎提供多循环支持。 例如

string bodyTextSub = "{{ for service in services }} ServiceName: {{ service }} {{ end }}" +
                "{{ for subservice in subServiceList }} SubServiceName: {{ subservice }} {{ end }}";
List<string> subServiceList = new List<string>
            {
                "PingSubService","UrlSubService"
            };
            Dictionary<string,List<string>> serviceDictionary = new Dictionary<string,List<string>>()
            {
                {"emailContent",subServiceList},{"mailContent",subServiceList}
            };

            var template2 = Template.Parse(bodyTextSub);
            var result2 = template2.Render(new { services = serviceDictionary });
            Console.WriteLine(result2.ToString());

我得到的输出就像

ServiceName: {key: emailContent,value: [PingSubService,UrlSubService]}

我希望基于该键,我们应该在子服务中循环,但是这没有发生。 有人可以帮我吗?

我的第二个问题是Scriban模板引擎是否支持嵌套循环? 在此先感谢

iCMS 回答:Scriban模板引擎多循环支持

Scriban确实支持嵌套循环。我已经更新了您的代码以显示您将如何执行此操作。我已根据您的请求更新了代码和结果。

var bodyTextSub = @"{{ for service in services }} 
ServiceName: {{ service.key }} {{$counter = 1}}
SubServices: {{ for subService in service.value }}{{ `
  `; $counter + `. `; $counter = $counter + 1 ; }}{{ subService }}{{ end }}
{{ end }}";
var subServiceList = new List<string>
{
    "PingSubService","UrlSubService"
};
var serviceDictionary = new Dictionary<string,List<string>>()
{
    {"emailContent",subServiceList},{"mailContent",subServiceList}
};

var template2 = Template.Parse(bodyTextSub);
var result2 = template2.Render(new {services = serviceDictionary});
Console.WriteLine(result2.ToString());

这将导致以下输出:

ServiceName: emailContent 
SubServices: 
  1. PingSubService
  2. UrlSubService
 
ServiceName: mailContent 
SubServices: 
  1. PingSubService
  2. UrlSubService
本文链接:https://www.f2er.com/1962255.html

大家都在问