使用Fluid Parser绑定HTML模板:循环执行但数据未绑定问题
Fluid Parser数据绑定失败排查方案
核心问题点
循环变量与模板引用变量不匹配
HTML模板里循环定义的变量是listofTransactionModel,但内部读取属性时用的却是listofTransactions,变量名完全不一致,根本找不到当前迭代项的属性。而且循环的集合名和变量名同名,本身就容易造成混淆,建议修改循环变量名。MemberAccessStrategy注册类型错误
你注册的是匿名类型new { previousbalance = 0, currentbalance = 0, ... }.GetType(),但如果listofTransactionModel里的元素是自定义实体类(比如TransactionModel),Fluid无法识别未注册的实体类属性,自然读不到数据。冗余过滤器无实际作用
你添加的previousbalance等过滤器只是直接返回输入值,模板里也没用到这些过滤器,属于多余代码,可直接删除。
修正后的代码示例
HTML模板
<html> {% for transaction in listofTransactionModel %} <tr> <td>{{transaction.previousbalance}}</td> <td>{{transaction.currentbalance}}</td> <td>{{transaction.credittransactionamount}}</td> <td>{{transaction.debittransactionamount}}</td> <td>{{transaction.activitytype}}</td> </tr> {% endfor %} </html>
C#代码
假设你的实体类为TransactionModel,修改MemberAccessStrategy的注册逻辑:
if (parser.TryParse(source1, out var template, out var error)) { var options = new TemplateOptions { Trimming = TrimmingFlags.TagRight }; // 注册实际使用的TransactionModel类型 options.MemberAccessStrategy.Register<TransactionModel>(); var context = new TemplateContext(options); context.SetValue("listofTransactionModel", listofTransactionModel); var result = template.Render(context); Console.WriteLine(result); }
内容的提问来源于stack exchange,提问作者Komal59
相关产品推荐
相关产品推荐

