0

I am trying to use Scriban template engine for replacing the Dictionary Values. For Example

string bodyText = "Hi,
           The following service(s) has reported issues.
           {{emailContent}}
        Thanks " ;
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>()
{
   {"emailContent",  "UserManagement has following unhealthy subservice(s)"}
};
 

 var template1 = Template.Parse(bodyText);
  var result1 = template1.Render(new { emailContent = keyValuePairs[emailContent] });
  Console.WriteLine(result1.ToString());

But I am getting an error at the Render line. Basically want to replace that emailContent with Dictionary. values. I know I am doing some mistakes at render line. Can anyone point out my mistake or give any solution for that. Thanks

user2911592
  • 91
  • 12

1 Answers1

0

There are a few mistakes in the code. I'm not sure if you are trying to also have a list of sub-services as the text depicts. If so, see this link, https://stackoverflow.com/a/62902173/6326441.

var bodyText = @"Hi,
The following service(s) has reported issues:{{ for service in services }}
    ""{{ service.key }}"": ""{{service.value}}""{{end}}
Thanks ";
var keyValuePairs = new Dictionary<string, string>()
{
    {"UserManagement",  "UserManagement has following unhealthy subservice(s)"},
    {"DNS",  "Network has following unhealthy subservice(s)"}
};


var template1 = Template.Parse(bodyText);
var result1 = template1.Render(new { services = keyValuePairs });
Console.WriteLine(result1.ToString());

This will result in the following:

Hi,
The following service(s) has reported issues:
    "UserManagement": "UserManagement has following unhealthy subservice(s)"
    "DNS": "Network has following unhealthy subservice(s)"
Thanks 
Bryan Euton
  • 919
  • 5
  • 12