public ViewResult Index(int? page, string sort, string sortdir,string searchstring)
{
ViewBag.RowsPerPage = BgResources.Pager_PostPerPage;
if (!String.IsNullOrEmpty(searchstring))
{
Session["searchstring"] = searchstring;
}
else
{
Session["searchstring"] = String.Empty;
}
var pageIndex = page ?? 0;
bool dir;
if (sortdir == null)
{
dir = false;
}
else
{
dir = sortdir.Equals("ASC", StringComparison.CurrentCultureIgnoreCase) ? true : false;
}
if (sort == null)
{
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
}
else
{
switch (sort.ToLower())
{
case "title":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Title, dir, Session["searchstring"].ToString());
break;
case "datecreated":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
break;
case "dateupdated":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateUpdated, dir, Session["searchstring"].ToString());
break;
case "ispublic":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsPublic, dir, Session["searchstring"].ToString());
break;
case "ishomepost":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsHomePost, dir, Session["searchstring"].ToString());
break;
case "isaboutme":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsAboutMe, dir, Session["searchstring"].ToString());
break;
case "allowanonymouscomments":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.AllowAnonymousComments, dir, Session["searchstring"].ToString());
break;
case "ispostcommentsclosed":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.IsPostCommentsClosed, dir, Session["searchstring"].ToString());
break;
case "category.name":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Category.Name, dir, Session["searchstring"].ToString());
break;
case "user.username":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.User.Username, dir, Session["searchstring"].ToString());
break;
case "visits":
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.Visits, dir, Session["searchstring"].ToString());
break;
default:
Posts = BlogServices.SearchForPagedPostsByParam(pageIndex, Int32.Parse(BgResources.Pager_PostPerPage), p => p.DateCreated, dir, Session["searchstring"].ToString());
break;
}
}
// Get Paged number of Posts after do the search with the parameter (searchstring)
ViewBag.TotalPosts = BlogServices.GetPagedNumber();
return View(Posts);
}