0

我正在做一个类似于亚马逊礼品卡系统的 asp.net mvc3 应用程序。我有一个名为 Cards 的模型,它与模型用户、cardStatus、paymentMethod 和 cardHistory 相关。我正在做一个网格,在其中显示所有卡片的数据(创建者、初始金额、状态)。我正在使用 WebGrid 来显示数据。卡片在时间上可以有多个状态,当我添加Controller时,asp生成了这段代码:

public ViewResult Index()
    {
       var cards= db.cards.Include(t => t.cardStatus).Include(t => t.paymentMethod).Include(t => t.users);           

       return View(cards.ToList());
    }

问题是我需要在 webgrid 中显示最新的卡片状态,但是生成的查询会带来所有状态,所以它在 webgrid “column cardStatus.status.name 不存在”中给我一个错误我的 webgrid 代码:

@grid.GetHtml(
        headerStyle: "header",
        tableStyle: "table table-striped table-bordered table-hover",
        columns: new[] {
            grid.Column("cardId", header: "Card"),
            grid.Column("user.ID", header: "Creator"),
            grid.Column("initialAmount", header: "Amount"),
            grid.Column("cardStatus.status.name", header: "Status")
        }

) 我尝试了一些 LINQ 语句,但我是新手,所以它不起作用。怎么才能带上所有的卡信息,但只有最新的状态?谢谢

4

1 回答 1

0
cardStatus 

是卡片对象的所有状态的集合,对吗?我会在您的 Card 类中添加一个属性:

public partial class Card {
    public CardStatus LastStatus
    {
        get
        {
            return cardStatus.Last();
        }
    }
}

如果您需要多次访问最后一个状态,这将很有用。比您可以像这样在 WebGrid 中添加列:

grid.Column("LastStatus.name", header: "Status")

您还可以使用 LINQ 查询来解决您的问题。在此处查看有关帮助:MSDN:101 LINQ 示例(尤其是加入运算符将很有用:LINQ - 加入运算符

托马斯

于 2013-10-06T20:40:33.827 回答