В моем коде позади меня есть 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: «объект» не содержит определения для «транзакции»
В то же время, если у меня запущен отладчик, я могу посмотреть на «trans», и я вижу, что внутри него есть объект Transaction под названием «транзакция», и в нем также есть моя строка. Кроме того, объект транзакции внутри него содержит значение для Amount. Кажется, что Microsoft где-то конвертирует мою динамику в объект.
Еще один тест, который я выполнил, показал, как работает тип trans с GetType (), и получил следующее:
<> f__AnonymousTypef`2 [ProjectName.Packages.Investment.Business.Transaction, System.String]
Это не обычный «объект», поэтому я не уверен, что это за тип. Есть идеи, почему мой foreach не работает и что я могу сделать по-другому?