我有了一个模型填充像这样一个MVC Razor视图:集团按月在MVC Razor视图
public class HomeController : Controller
{
private IDataSource _db;
public HomeController (IDataSource db)
{
_db = db;
}
public ActionResult Events()
{
var allevents = _db.Events;
ViewBag.Title = "Events";
return View(allevents);
}
}
事件模型是这样的:
public class Event
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string Description { get; set; }
public virtual Location Location {get;set;}
public virtual DateTime StartDate {get;set;}
public virtual DateTime EndDate { get; set; }
}
我想在我的视图中显示项目,以便按月份名称进行分组。例如:
月
EventA标题,EventA说明等
EventB标题,EventA说明等
月
EventC标题,EventC说明等。
如果p可能你可以进一步把它打破一年,然后一个月,但不是完全必要的,因为我没有看到事件将提前一年多的情况。
我在Razor视图试过,但似乎稍微偏离...
@{var monthList = from e in Model
group e by e.StartDate.Month into g
orderby g.Key
select g;
foreach(var monthGroup in monthList)
{
string month = monthGroup.Key.ToString();
<h2 class="h4 pi-weight-700 pi-uppercase pi-has-bg pi-margin-bottom-25">
@month
</h2>
foreach (Model e in monthGroup)
{
// do something with the events
}
}}
这应该在控制器中完成,是_db.Events IQueryable?如果是这样,请使用一点LINQ来对它们进行分组。 – 2014-09-26 14:15:23
你的_db可能返回一个IEnumerable或IQueryble对象。只需在您的模型上调用'GroupBy',然后调用'ToDictionary'。这里有很多例子。像[这一个](http://stackoverflow.com/questions/627867/linq-query-to-return-a-dictionarystring-string)。 – 2014-09-26 14:15:49
更重要的是,你有什么尝试? – 2014-09-26 14:16:39