public static MvcHtmlString SayfaLinkleri(this HtmlHelper html, SayfalamaBilgisi pagingInfo, Func <int, string> pageUrl) { StringBuilder result = new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPages; i++) { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i.ToString(); if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); result.Append(tag.ToString()); } return(MvcHtmlString.Create(result.ToString())); }
public void SayfaLinkleriOlusturuluyorMu() { // Arrange - düzenleme // HtmlHelper myHelper = null; // Arrange - örnek bi sayfalama verisi oluşturdum SayfalamaBilgisi pagingInfo = new SayfalamaBilgisi { CurrentPage = 2, TotalItems = 28, ItemsPerPage = 10 }; // Arrange - lambda ifadesi ile delegate'a atama yaptım Func <int, string> pageUrlDelegate = i => "Page" + i; // Act MvcHtmlString result = myHelper.SayfaLinkleri(pagingInfo, pageUrlDelegate); // Assert - teyit et Assert.AreEqual(@"<a class=""btn btn-default"" href=""Page1"">1</a>" + @"<a class=""btn btn-default btn-primary selected"" href=""Page2"">2</a>" + @"<a class=""btn btn-default"" href=""Page3"">3</a>", result.ToString()); }
public void SayfalayiciViewModelGonderiliyorMu() { // Arrange Mock <IUrunDeposu> mock = new Mock <IUrunDeposu>(); mock.Setup(m => m.Urunler).Returns(new Product[] { new Product { UrunID = 1, Ad = "P1" }, new Product { UrunID = 2, Ad = "P2" }, new Product { UrunID = 3, Ad = "P3" }, new Product { UrunID = 4, Ad = "P4" }, new Product { UrunID = 5, Ad = "P5" } }); // Arrange UrunController controller = new UrunController(mock.Object); controller.SayfabasiUrunSayisi = 3; // Act UrunListelemeViewModel result = (UrunListelemeViewModel)controller.Listele(null, 2).Model; // Assert SayfalamaBilgisi pageInfo = result.PagingInfo; Assert.AreEqual(pageInfo.CurrentPage, 2); // 2'ye eşit mi ? Assert.AreEqual(pageInfo.ItemsPerPage, 3); Assert.AreEqual(pageInfo.TotalItems, 5); Assert.AreEqual(pageInfo.TotalPages, 2); }