在aspx页面中使用嵌入代码的c#dynamic

时间:2011-02-21 22:31:53

标签: asp.net dynamic .net-4.0 c#-4.0

在我的代码后面我有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不起作用以及我能做些什么不同的任何想法?

2 个答案:

答案 0 :(得分:2)

尝试将数据绑定到repeater控件。它被设计为输出列表中项目的html,并将帮助您将设计与逻辑分开,这通常被认为是比尝试在脚本中动态生成html更好的做法。

答案 1 :(得分:0)

你能尝试如下吗?

<% foreach (dynamic trans in AllTransactions) { %>
    <span><%= trans.Amount %></span>
<% } %>

或者您可以检查自定义类Transaction的定义是否包含名为“Transaction”的成员变量?