You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Scriban模板引擎中替换字典值遇Render错误求解答

解决Scriban模板引擎替换字典值时的渲染错误

我来帮你排查这个问题——你在Render行遇到的错误,核心是两个小细节问题,咱们一步步解决:

错误原因分析

你写的keyValuePairs[emailContent]里,emailContent没有加引号,编译器会把它当成一个未定义的变量,这肯定会触发编译错误。另外,其实还有更简洁的方式传递数据源给Scriban,不用手动从字典取值再构建匿名对象。

修正方案1:修复索引语法

如果想保留原有的匿名对象传递方式,只需要把索引改成字符串字面量即可:

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);
// 这里把emailContent改成字符串字面量"emailContent"
var result1 = template1.Render(new { emailContent = keyValuePairs["emailContent"] });
Console.WriteLine(result1.ToString());

修正方案2:直接传入字典(更简洁)

Scriban支持直接把字典作为数据源传入,模板会自动匹配键名,省去构建匿名对象的步骤:

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);
// 直接传递字典,模板会自动解析键"emailContent"对应的值
var result1 = template1.Render(keyValuePairs);
Console.WriteLine(result1.ToString());

这两种方式都能正常渲染出你想要的结果:Hi, The following service(s) has reported issues. UserManagement has following unhealthy subservice(s) Thanks

内容的提问来源于stack exchange,提问作者user2911592

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:42:45