2013-02-13 7 views
1

J'utilise ASP.NET MVC3. Actuellement, j'ai un blog. Cela fonctionne bien, mais les entrées sont maintenant nombreuses, j'ai donc besoin d'un archivage pour les regrouper tous les mois. Le problème est que je n'avez pas une idée comment le faire ..


Je pense au son datetime, mais je ne sais pas la logique derrière .. Je veux obtenir quelque chose comme ça
Blog Archive ASP.NET MVC3

September 2012 (1) 
October 2012 (3) 
December 2012 (0) 

J'apprécierais n'importe qui qui m'aiderait. Merci. :)

Répondre

2

Vous pourriez le faire comme ça. J'ai le même problème avant.

ArchiveRepository

public IQueryable<ArchiveListModel> AchiveList() 
     { 

      var ac = from Post in db.Posts 
        group Post by new { Post.DateTime.Year 
, Post.DateTime.Month } 
        into dategroup 
        select new ArchiveListModel() 
         { 

         AchiveYear = dategroup.Key.Year, 
         AchiveMonth = dategroup.Key.Month, 
         PostCount = dategroup.Count() 

         }; 

      return ac; 
     } 

Contrôleur

public ActionResult ArchiveBrowse(int AchiveYear, int AchiveMonth, int PostCount) 
     { 
      var archivemodel = (from a in db.Posts 
           where a.DateTime.Year == AchiveYear && 
             a.DateTime.Month == AchiveMonth 
           select a).ToList(); 


      return View(archivemodel); 
     } 

Voir

@foreach (var item in Model) 
{ 
@Html.ActionLink(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(item.AchiveMonth) + "" + item.AchiveYear + " (" + item.PostCount + ")", 
    "ArchiveBrowse", "Post", new 
    { 
     AchiveYear = item.AchiveYear, 
     AchiveMonth = item.AchiveMonth, 
     PostCount = item.PostCount 
    }, null) 

} 
+0

Merci. Cela fait un mois que j'ai posé cette question. Mais cela aide encore. –