在我的代码后面我有public IEnumerable<dynamic> AllTransactions{ get; set; }
由{Transaction, String}
组成(通过linq-to-sql创建为一个新的匿名对象),Transaction
是我自定义的一个类创建
在我的aspx页面中,我想做以下
<% foreach (dynamic trans in AllTransactions) { %>
<span><%= trans.transaction.Amount %></span>
<% } %>
在我的代码中,我可以在trans.transaction.Amount
内引用foreach
,但我似乎没有在aspx页面上运气好。我得到一个例外:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'object'不包含'transaction'的定义
同时,如果我运行调试器,我可以查看'trans',我看到它里面有一个名为'transaction'的Transaction对象,它也有我的字符串。此外,其中的“transaction”对象包含Amount的值。似乎微软将我的动态转换为对象。
我做的另一个测试是用GetType()吐出了trans的类型,并得到了这个:
&LT;&GT; f__AnonymousTypef`2 [ProjectName.Packages.Investment.Business.Transaction,System.String]
这不是常规的'对象',所以我不确定它的类型是什么。关于为什么我的foreach不起作用以及我能做些什么不同的任何想法?
答案 0 :(得分:2)
尝试将数据绑定到repeater控件。它被设计为输出列表中项目的html,并将帮助您将设计与逻辑分开,这通常被认为是比尝试在脚本中动态生成html更好的做法。
答案 1 :(得分:0)
你能尝试如下吗?
<% foreach (dynamic trans in AllTransactions) { %>
<span><%= trans.Amount %></span>
<% } %>
或者您可以检查自定义类Transaction的定义是否包含名为“Transaction”的成员变量?