Используя структуру Entity, у меня есть сущность Account (идентификатор, имя) и сущность AccountEntry (id, AccountID, Entry).
Мне нужна сводная страница, на которой показаны все учетные записи в учетной записи вместе с их соответствующими балансами (сумма записи для идентификатора учетной записи). Я попытался поместить значения в ViewBag, но он просто выдает ошибку, когда пытается использовать его в представлении. Есть ли элегантный способ отправить эту информацию в представление?
Вот что я пробовал:
КОНТРОЛЛЕР:
ViewBag.Accounts = db.Accounts.Select(x => new
{
id = x.Id.ToString(),
Account = x.Name,
Balance = db.AccountEntries.AsEnumerable().Where(y => y.AccountID == x.Id).Select(y => y.Amount).DefaultIfEmpty(0).Sum()
}).ToList();
ПОСМОТРЕТЬ:
@foreach (var item in ViewBag.Accounts)
{
<tr>
<td>
@item.Account
</td>
<td>
@item.Balance
</td>
<td>
</td>
</tr>
}
Но представление выдает ошибку: Дополнительная информация: «объект» не содержит определения для «Учетной записи», хотя отладка показывает, что у него есть значение.
Какова наилучшая практика для этого? Я использую модель?
И как лучше всего, если я, помимо счетов, хочу отправить и другие списки сводной информации?
EDITED: Это хорошая модель просмотра для вышеперечисленного?
Это хорошая модель просмотра?
public class SummaryModel
{
public class AccountSummary
{
public Account account { get; set; }
public decimal Balance { get; set; }
}
public IEnumerable<AccountSummary> AccountSummaries { get; set; }
}