public static MvcHtmlString PageLinks(this HtmlHelper html, PagingIfno pagingIfno, Func <int, string> pageUrl) { StringBuilder result = new StringBuilder(); for (int i = 1; i <= pagingIfno.TotalPages; i++) { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i.ToString(); if (i == pagingIfno.CurrentPage) { tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); result.Append(tag.ToString()); } return(MvcHtmlString.Create(result.ToString())); }
public void Can_generate_Page_Links() { HtmlHelper myHelper = null; PagingIfno pagingIfno = new PagingIfno { CurrentPage = 2, TotalItems = 28, ItemPerPage = 10 }; Func <int, string> pageUrlDelegate = i => "Strona" + i; //act MvcHtmlString result = myHelper.PageLinks(pagingIfno, pageUrlDelegate); //assert Assert.AreEqual(@"<a class="" btn btn-default"" href=""Strona1"">1</a>" + @"<a class="" btn btn-default btn-primary selected"" href=""Strona2"">2</a>" + @"<a class="" btn btn-default"" href=""Strona3"">3</a>", result.ToString()); }
public void Can_Send_Paginatio_View_Model() { Mock <IProductRepository> mock = new Mock <IProductRepository>(); mock.Setup(m => m.Products).Returns(new Product[] { new Product { ProductID = 1, Name = "P1" }, new Product { ProductID = 2, Name = "P2" }, new Product { ProductID = 3, Name = "P3" }, new Product { ProductID = 4, Name = "P4" }, new Product { ProductID = 5, Name = "P5" } }); ProductController controller = new ProductController(mock.Object); controller.PageSize = 3; ProductsListViewModel result = (ProductsListViewModel)controller.List(null, 2).Model; PagingIfno pageInfo = result.PagingIfno; Assert.AreEqual(pageInfo.CurrentPage, 2); Assert.AreEqual(pageInfo.ItemPerPage, 3); Assert.AreEqual(pageInfo.TotalItems, 5); Assert.AreEqual(pageInfo.TotalPages, 2); }