Связанный сводный запрос для просмотра в ASP.Net MVC

78
10

Я придерживаюсь того, как лучше представить некоторые данные, которые динамически генерируются из двух разных таблиц.


Учитывая мой запрос:


    var assets = assetRepo.Find(x => x.LoginId == User.Identity.Name);
var accounts = repository.Find(x => x.AccStatus == "A" && x.LoginId == User.Identity.Name);

var query = from asst in assets
join acct in accounts on asst.AccountId equals acct.AccountId
select new
{
Account = acct.AccountNumber,
Status = acct.AccStatus,
Make = asst.Make,
Model = asst.Model,
Submodel = asst.SubModel,
Registration = asst.Registration,
Balance = acct.BalanceOutstanding,
NextPayment = acct.NextPayment,
Date = String.Format("{0:dd MMM yyyy}", acct.NextPaymentDate),
Due = acct.ArrearsBal
};


Какой был бы лучший (то есть самый чистый) способ привязать это к представлению? Нужен ли пользовательский класс или есть способ указать и перебрать коллекцию анонимных типов?

спросил(а) 2021-01-25T15:22:22+03:00 4 месяца, 4 недели назад
1
Решение
63

Создание пользовательского класса может дать вам дополнительные преимущества. Вы можете использовать DisplayAttribute для установки заголовков столбцов и порядка. Затем вы можете создать представление (или шаблон для использования с DisplayFor), который принимает список объектов любого типа и использует отражение для чтения аннотаций и отображения на экране.


class Report {
[Display(Name="Account",Order=1)]
public string Account {get; set;}

[Display(Name="Next payment",Order=2)]
public Date NextPayment {get; set;}
}

Он выглядит также чистым. Вы можете использовать эти аннотации не только для сетки, но также для экспорта excel или других операций с данными.

ответил(а) 2021-01-25T15:22:22+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема