在部分视图中声明通用IEnumerable

时间:2017-09-11 18:18:29

标签: c# asp.net-mvc linq-to-sql

很确定以前已经回答了这个问题,而我在搜索时并没有使用正确的措词......

我是MVC和C#的新手,试图将LINQ查询的结果映射到局部视图,我不知道如何声明视图模型,因此我可以遍历结果。我没有将这些结果映射到模型。我只是想从表中获取一些统计数据,为这个简单的查询创建一个类似乎没有道理......或者是它?

控制器

        public ActionResult _DomainCounts()
    {
        DB.Log = Console.Out;
        var totals = from p in DB.Redirects
                 group p by p.Domain into g
                 select new
                 {
                     Domain = g.Key,
                     Count = g.Count()
                 };

        return PartialView("_DomainCounts", totals.AsEnumerable());
    }

查看

@model IEnumerable

@foreach (var d in Model)
{
     @d.Domain, @d.Count <br />
}

显然我的View不知道Domain和Count是什么,我不知道如何正确声明它。或者我是否需要为这些结果创建模型?

1 个答案:

答案 0 :(得分:0)

使用new { Domain = g.Key, Count = g.Count() }您正在创建新的anonymous type。你基本上是在说:我不在乎班级名称是什么,我只想让它拥有这两个属性。但在您的情况下,您确实关心名称是什么,否则您无法声明模型的类型。正如其他人提到的那样,你必须使用这两个属性显式创建类,将它作为查询结果使用,然后你可以声明模型的正确类型。