Привязка сводного запроса для просмотра в ASP.Net MVC - PullRequest
0 голосов
/ 22 июля 2010

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

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

    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
                };

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

1 Ответ

1 голос
/ 22 июля 2010

Создание пользовательского класса может дать вам дополнительные преимущества.Вы можете использовать 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 или других операций с данными.

...