我可以将匿名类型传递给ASP.NET MVC视图吗?

47

我刚开始接触ASP.NET MVC,现在它处于Beta版本。在我的代码中,我运行了一个简单的LINQ to SQL查询来获取结果列表,并将其传递给我的视图。类似这样:

var ords = from o in db.Orders
           where o.OrderDate == DateTime.Today
           select o;

return View(ords);

然而,在我的看法中,我意识到我需要为每个订单访问客户的姓名。我开始使用o.Customer.Name,但我相当确定这将为每个订单执行单独的查询(因为LINQ采用惰性加载)。

减少查询数量的逻辑方法是同时选择客户名称。类似于:

var ords = from o in db.Orders
           from c in db.Customers
           where o.OrderDate == DateTime.Today
               and o.CustomerID == c.CustomerID
           select new { o.OrderID, /* ... */, c.CustomerName };

return View(ords);

现在我的变量“ords”是一个匿名类型的IEnumerable。

是否有可能以这样的方式声明ASP.NET MVC视图,使其接受一个IEnumerable作为其视图数据,其中T由从控制器传递的参数定义,或者我必须定义一个具体类型来从查询中填充?

11个回答

0

如果我没弄错的话,匿名类型在编译时会被转换为强类型对象。但这个强类型对象是否适用于视图数据则是另一个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接