我有了一個模型填充像這樣一個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