在asp.net mvc中使用动态模型创建视图

时间:2014-01-22 09:52:03

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我是新的 Asp.Net Mvc 。我正在为 Blogging 做一个示例应用程序。我尝试为存档创建部分视图,以便根据日期发布进行分类。

Month/Year(count)
  Post 1
  Post 2
Month/Year(count)
  Post 1
  Post 2

在控制器

[ChildActionOnly]
    public ActionResult Archives()
    {
        var post = from p in db.Posts
                   group p by new { Month =p.Date.Month, Year = p.Date.Year } into d
                   select new { Month = d.Key.Month , Year = d.Key.Year , count = d.Key.Count(), PostList = d};

        return PartialView(post);
    }

请帮我写一下这个动作的观点,包括本月,年份,计数和邮寄集合。

1 个答案:

答案 0 :(得分:2)

您可能正在努力,因为您正在将匿名类型传递到您的视图中。我会创建一个ViewModel来表示您的类型;

public class Archive
{
  public string Month { get; set; }
  public string Year { get; set; }
  public int Count { get; set; }
  public ICollection<Post> Posts { get; set; }
}

然后更改您的操作以使用该类型;

[ChildActionOnly]
public ActionResult Archives()
{
  var post = from p in db.Posts
    group p by new { Month =p.Date.Month, Year = p.Date.Year } into d
    select new Archive { Month = d.Key.Month , Year = d.Key.Year, Count = d.Key.Count(),
      PostList = d };

    return PartialView(post);
}

然后您可以强烈地将视图输入Archive类;

@model IEnumerable<Archive>

@foreach (Archive archive in Model)
{
  <h2>
    @archive.Month / @archive.Year
  </h2>
}

如果我能得到进一步帮助,请告诉我。

马特