protected override string DoProcess(dynamic args, string content) { string itemname = ComFunc.nvl(args.itemname); string dataname = ComFunc.nvl(args.dataname); if (CurrentContext.GetBindObject(dataname) == null) { return(""); } if (!(CurrentContext.GetBindObject(dataname) is IEnumerable <object>)) { return(""); } var data = (IEnumerable <object>)CurrentContext.GetBindObject(dataname); var rtn = new StringBuilder(); var index = 0; foreach (dynamic item in data) { var newitemname = $"{itemname}_{index}"; rtn.AppendLine(content.Replace($"#v({itemname}", $"#v({newitemname}")); CurrentContext.AddBindObject(newitemname, item); index++; } return(rtn.ToString()); }