2010-07-21 153 views
0

我坚持如何最好地呈现一些从两个不同的表中动态生成的数据。绑定透视查询在ASP.Net中查看MVC

鉴于我的查询:

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

创建自定义类可以为您提供额外的好处。您可以使用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导出或其他数据操作。